李白喝酒,起始有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; }
时间: 2024-10-18 06:57:01