AcWing 801. 二进制中1的个数
原题链接
简单
作者:
zicxr
,
2024-01-17 13:09:53
,
所有人可见
,
阅读 44
C++ lowbit求二进制中1的个数
#include <iostream>
/*
lowbit 求二进制中1的个数
*/
using namespace std;
const int N = 100000 + 10;
int a[N], b[N];
int n;
int lowbit(int x) {
return x & (~x + 1); // 得到最后一个一及其之后数
}
int main() {
scanf("%d", &n);
int m = n;
for(int i = 0; i < n; i ++) scanf("%d", &a[i]);
int i = 0;
while(n --) {
while(a[i]) {
int temp = lowbit(a[i]);
a[i] -= temp; // 剪掉最后一个一及其之后的数
b[i] ++; // 一的个数加一
}
i ++;
}
for(int i = 0; i < m; i ++) printf("%d ", b[i]);
return 0;
}
小伙不错,我看好你