2150:神奇的工号分数: 2
时间限制:1 秒
内存限制:128 兆
特殊判题: 否
提交:4
解决: 4
题目描述
ACM俱乐部里员工的都有一个工号,这个工号的二进制表达中1的个数越多,这个员工的级别就越高。
输入一个工号,求这个工号的二进制表达中1的个数。
例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
输入格式
每组测试数据输入一行,每行输入一个整数(绝对值<=1000000)。
输出
每组测试数据输出一行,这个工号的二进制表达中1的个数。
样例输入
10
0
-32768
样例输出
2
0
17
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int solve(int x){
int cnt=0;
unsigned int flag=1;
while(flag){
if(x&flag)
cnt++;
flag<<=1;
}
return cnt;
}
int main(){
//freopen("input.txt","r",stdin);
int n;
while(~scanf("%d",&n)){
printf("%d\n",solve(n));
}
return 0;
}