{
return t&-t;
}
具体变化管他呢。。。反正就是能取从右往左第一个非0位置(记为k)的大小,那么2^k=lowbit(t);
则能求出某个数在二进制下末位有几个0,
用处:题目链接 http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=1222
#include<stdio.h>
#include<cmath>
long long x=0;
char c;
int sum=0;
long long suan(long long i)
{
return i&(-i);
}
int main()
{
while(~(c=getchar()))
{
if(c>='0'&&c<='9')
x=x*10+c-'0';
else if(c==' ')
{
if(x==0)
{
sum+=64;
}
else
sum+=((int)log2(suan(x)));
x=0;
}
}
printf("%d\n",sum);
}
592

被折叠的 条评论
为什么被折叠?



