AcWing 801. 二进制中1的个数
原题链接
简单
作者:
小张同学
,
2020-03-22 10:01:13
,
所有人可见
,
阅读 444
lowbit(x):返回x的最后一位1
int lowbit(int x)
{
return x & -x;
}
例:
x = 1010 lowbit(x) = 10
x = 101000 lowbit(x) = 1000
#include <iostream>
using namespace std;
int lowbit(int x)
{
return x & -x;
}
int main ()
{
int n;
cin >> n;
while(n -- )
{
int x;
cin >> x;
int res = 0;
while (x) x -= lowbit(x), res ++ ;
cout << res << ' ';
}
return 0;
}
x >> k & 1
x的二进制表示
int x = 10;
for (int k = 31; k >= 0 ; k -- ) cout << (x >> k & 1); => 1010
int main()
{
int n;
cin >> n;
while(n -- )
{
int x;
cin >> x;
int res = 0;
for (int k = 31; k >= 0; k -- )
{
if (x >> k & 1) res ++ ;
}
cout << res << ' ';
}
return 0;
}