类似快速幂的思想。2进制
#include <cstdio> #include <cstring> #include <iostream> using namespace std; int main(){ int m; scanf("%d",&m); while(m--){ int n,cnt = 0; int num[1000]; memset(num,0,sizeof(num)); scanf("%d",&n); while(n){ num[cnt++] = n % 2; n /= 2; } int s = cnt - 1; for(int i = cnt - 2;i >= 0;i--){ if(num[i]) s++; } printf("%d\n",s); } return 0; }