A48273. 计算好数若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为好数。例如:(13)10 = (1101)2,其中1的个数为3,0的个数为1,则此数是好数。(10)10 = (1010)2,其中1的个数为2,0的个数为2,则此数不是好数。(24)10 = (11000)2,其中1的个数为2,0的个数为3,则此数不是好数。对于给定的N,写程序求出1~N之中(…
填空题
中等
知识点
题目描述
计算好数
若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为好数。
例如:
(13)10 = (1101)2,其中1的个数为3,0的个数为1,则此数是好数。
(10)10 = (1010)2,其中1的个数为2,0的个数为2,则此数不是好数。
(24)10 = (11000)2,其中1的个数为2,0的个数为3,则此数不是好数。
对于给定的N,写程序求出1~N之中(包括1与N)中的好数个数。
输入
一个整数N(N<=1000)
输出
一个整数,表示1~N之中(包括1与N)中的好数个数。
样例输入
10
样例输出
5
参考答案
#include <iostream>
using namespace std;
int main()
{
int conA=0;
for(int i=1; i<=1000; i++)
{
int A=0,B=0,k;
k=i;
while(k)
{
if(k&1==1) //位运算&
A++;
k>>=1;
}
if(A>B)
conA++;
}
cout<<conA<<endl;
return 0;
}
上一题
下一题