A. Raising Bacteria(位运算)
题意:最初,盒子是空的。你可以放一些细菌进去。每个细菌每晚会分裂成两个(2变4,4变8)。你需要在某一时刻,观察到X个细菌,请问至少投放多少个细菌。
题解:观察这道题,有二进制特征,应该想到位运算。
int main()
{
int n,ans=0;
cin >> n;
while (n)
{
if (n & 1)
{
ans++;//如果某一位上是1,就说明靠原始的那个细菌不能得到这个数目
}
n >>= 1;//每次向右移一位
}
cout << ans;
return 0;
}