cf#320 Div.2 Problem A Raising Bacteria
2015-09-17 02:40
459 查看
一道简单的十进制数转化为二进制数的问题,答案是二进制数数位上1的个数
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int A[33]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288,1048576,2097152,4194304,8388608,16777216,33554432,67108864,134217728,268435456,536870912}; int main(){ int x; scanf("%d",&x); int ans=0; for(int i=29;i>=0;i--){ if(x>=A[i]){ ans++; x-=A[i]; } } printf("%d\n",ans); }