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;

}

posted @ 2021-02-03 18:30  Uiney  阅读(58)  评论(0编辑  收藏  举报