用了个naive的方法,即循环右移统计1出现的个数,本来想如果扣分太多的话就重写,结果只扣了0.1分,那就算了,就这样吧
#include <iostream>
#include <fstream>
using namespace std;
int main (int argc, char* argv[])
{
freopen(argv[1], "r", stdin);
int n;
while(cin >> n) {
int bitNum = 0;
while(n) {
if(n & 0x1)
bitNum++;
n >>= 1;
}
cout << bitNum << endl;
}
return 0;
}