#include <iostream>
using namespace std;
int main(int argc, const char * argv[])
{
int m,n;
cin>>m;
while(m--){
cin>>n;
int count=0;
while(n!=0){
count++;
if(n%2)
count++;
n/=2;
}
cout<<count-2<<endl; //这里最高位的‘1’算了两次,所以要减去2
}
return 0;
}
总结:这个题有思路,但是总是感觉好像有些地方想不通。最后那个减2是必须的,见注释。先发表出来,明天再来看看^_^