若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类数,否则就称其为B类数。
例如:
(13)10=(1101)2
其中1的个数为3,0的个数为1,则称此数为A类数;
(10)10=(1010)2
其中1的个数为2,0的个数也为2,称此数为B类数;
(24)10=(11000)2
其中1的个数为2,0的个数为3,则称此数为B类数;
程序要求:
求出1~1000之中(包括1与1000),全部A、B两类数的个数。
下面是我的代码,运行结果是1000 0
找不出哪错了,大佬们帮帮孩子吧😭
'代码'
#include <stdio.h>
int main()
{
int m = 0, i, p, q, a, n ;
for (i = 1, p = 0, q = 0; i <= 1000; i++) {
n = i;
for (; n != 0;) {
a = n % 2;
n = n / 2;
if (a == 0)
q++;
else
p++;
}
if (p > q)
m++;}
printf("%d %d\n", m, 1000 - m);
return 0;
}