#3806. 计算好数(C++二级)

计算好数(C++二级)

题目描述

T5 若将一个正整数化为二进制数,在此二进制数中,我们将数字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)中的好数个数。

时间限制:1000 内存限制:65536

输入

一个整数,题目中的N(N ≤ 1000)

输出

一个整数,表示1~N之中(包括1与N)中的好数个数

样例输入

10

样例输出

5

解析

此题考查的是进制转换,将1-n之间的所有数字转换成二进制,计算有多少个1和多少个0,比较1和0的多少,然后对符合好数的进行计数。

Limitation

1s, 1024KiB for each test case.