首先先讲位运算两个比较重要的知识点
求n的第K位数字:n>>k&1
返回n的最后一位1 :lowbit(n)=n&-n;
#include<iostream> using namespace std; int n; const int N = 100010; int a[N]; int lowbit(int n) { return n&-n; } int main() { cin>>n; for(int i=0;i<n;i++) { int res=0; cin>>a[i]; while(a[i]){a[i]-=lowbit(a[i]); res++ ;}//根据前面的知识点这部操作就可完成上述操作。 cout<<res<<' '; } }