AcWing 801. 二进制中1的个数
原题链接
简单
作者:
Hope_
,
2021-05-23 21:42:57
,
所有人可见
,
阅读 227
C++ 代码
#include<iostream>
using namespace std;
const int N=100010;
int n;
int a[N];
int lowbit(int &x){
return x&(-x);//补码就是原码的最后一个1不变 往前的所有01取反
}
int main(){
cin>>n;
//yxc的写法 每一次直接访问a的元素
while(n--){
int res=0;
int x;
cin>>x;
while(x) x-=lowbit(x),res++;
cout<<res<<" ";
}
//我的写法
//cin>>n;
//for(int i=0;i<n;i++) cin>>a[i];
//int res=0;
//遍历数组中的每一个元素
//for(int i=0;i<n;i++){
// //如果a[i]的二进制中没有遍历完就继续
// while(a[i]) {
// a[i]-=lowbit(a[i]);
// res++;//结束的时候就是a[i]中1的个数了
// }
// cout<<res<<" ";
// res=0;//下次访问a[i]的时候res要初始化
//}
return 0;
}