测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题