【题目描述】
若将一个正整数化为二进制数,在此二进制数中,我们将数字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<stdio.h> 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:二进制分类
最新推荐文章于 2022-11-09 10:59:06 发布