1的个数
总时间限制:1000ms 内存限制:65536KB
描述
给定一个十进制非负整数N,求其对应2进制数中1的个数。
输入INPUT:
输入格式
输入包含一行,包含一个非负整数N。(N < 109)
输入样例
100
输出OUTPUT:
输出格式
输出一行,包含一个整数,表示N的2进制表示中1的个数。
输出样例
3
#include <iostream>
using namespace std;
int main()
{
int N=0,count=0;
cin>>N;
while(N)
{
if(N%2==1)
count++;
N/=2;
}
cout<<count<<endl;
return 0;
}
有帮助望采纳
通过将输入的数左移或右移后,与1进行&运算来计数。效率应该是比较高的
这样应该好理解些
#include <iostream>
using namespace std;
int main()
{
unsigned int N=0,count=0;
cin>>N;
for(int i = 0; i < 32; i++)
{
if((N >>i) & 1)
count++;
}
cout<<count<<endl;
return 0;
}