【题目描述】
若将一个正整数化为二进制数,在此二进制数中,我们将数字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两类数的个数。
【输入】
(无)
【输出】
一行,包含两个整数,分别是AA类数和BB类数的个数,中间用单个空格隔开。
【输入样例】
(无)
【输出样例】(无)
#include
int num1 = 0, num2 = 0;void gettwo(int n){int i;int count = 0, num = 0;while (1){i = n % 2;n /= 2;if (i == 1){count++;}if (i == 0){num++;}if (n == 0){break;}}if (count > num){num1++;}else{num2++;}}int main(){int i;for (i = 1; i <= 1000; i++){gettwo(i);}printf("%d %d", num1, num2);return 0;}
一本通1412:二进制分类
时间:2023-05-29
相关推荐