首页 > 代码库 > 李白喝酒

李白喝酒

李白喝酒,起始有2斗酒,遇到酒店酒翻倍,遇到花店喝一斗。

5个酒店10个花店后刚好喝完。问李白有多少种可能?

 

二进制枚举:

最后刚好喝完,则最后肯定是花店,喝一斗酒。

假定酒店为1,花店为0,我们枚举14位的二进制数,使得它有5个1,9个0,且使得最后剩酒1斗即答案。

#include<bits/stdc++.h>using namespace std;int main(){    int ans=0;    for(int i=0;i<(1<<14);i++)    {        int tot0=0;        int tot1=0;        int num=2;        for(int j=0;j<14;j++)        {            if(i&(1<<j))            {                num*=2;                tot1++;            }            else            {                num-=1;                tot0++;            }        }        if(tot1==5&&tot0==9&&num==1)        {            ans++;        }    }    cout<<ans<<endl;    return 0;}

 

李白喝酒