Dylans loves numbers
Accepts: 405
Submissions: 831
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 131072/131072 K (Java/Others)
问题描述
Dylans是谁?你可以在 UOJ 和 Codeforces上看到他。
在BestCoder里,他有另外一个ID:s1451900。
今天的题目都和他有关哦。
Dylans得到了一个数N。他想知道N的二进制中有几组1。
如果两个1之间有若干个(至少一个)0 “挡住”,他们就不是同一组的,
否则他们就是同一组的。
输入描述
第一行读入一个数T表示数据组数。 接下来T行,每行一个数N。 0≤N≤1018,T≤1000
输出描述
对于每组数据,输出一个数表示答案。
输入样例
1 5
输出样例
2
端午节bc题目,水
flag妙用
#include<stdio.h>
int main()
{
int t;
__int64 n;
scanf("%d",&t);
while(t--)
{
scanf("%I64d",&n);
int flag=0;
int cnt=0;
while(n)
{
if(n%2&&flag==0)
{
cnt++;
flag=1;
}
else if(!(n%2)&&flag==1)
flag=0;
n/=2;
}
printf("%d\n",cnt);
}
return 0;
}