地址:http://acm.hdu.edu.cn/showproblem.php?pid=2568
题意:中文。
mark:看清楚题就好了。就是求二进制表示时1的个数。本来嘛递归直接可以搞,请容我装逼一下用了位运算。。。
代码:
1 # include <stdio.h> 2 3 4 int calc(int x){return x?calc(x-(x&-x))+1:0;} 5 6 7 int main () 8 { 9 int T, n ; 10 scanf ("%d", &T) ; 11 while(T--) 12 { 13 scanf ("%d", &n) ; 14 printf ("%d\n", calc(n)) ; 15 } 16 return 0 ; 17 }