欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

一本通1412:二进制分类

时间:2023-05-29

【题目描述】

若将一个正整数化为二进制数,在此二进制数中,我们将数字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类数的个数,中间用单个空格隔开。

【输入样例】

(无)

【输出样例】

(无)

#includeint 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;}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。