题目描述
小A遇到了一座神奇的泉水,在泉水中洗涤会大幅增加他的精力。在一次洗涤中,泉水增加力量的数值为当前力量二进制表示中的最低位的1对应的值。
例如:
如果当前力量为9(1001 最低位1对应的值为1),增加的力量为1;
如果当前力量为12(1100 最低位1对应的值为100),增加的力量为4。
小A想要将他的力量变为2的幂次数,他需要在泉水中洗涤多少次呢?
输入
多样例测试
第一行输入T(T<=100,000),代表样例数;
剩余T行,每行输入一个数n(n<1,000,000,000)代表小A当前的力量。
输出
对于每次询问,输出小A需要在泉水中洗涤的次数。
样例输入 Copy
4
1
2
3
5
样例输出 Copy
0
0
1
2
#include<stdio.h>
#include<math.h>
int a[100];
int f(int k)
{
int i,y=0;
for(i=1;i<k;i++)//除了最高位不是1的情况下就满足2的幂
if(a[i