查看: 813|回复: 0

[C/C++] 1412:二进制分类

[复制链接]

1

技术

25

魅力

7

原创

管理员

Rank: 9Rank: 9Rank: 9

积分
11343
人气
297
分享
42

论坛元老优秀版主活跃会员最佳新人灌水之王

发表于 2021-9-19 22:57:24 | 显示全部楼层 |阅读模式
【题目描述】
若将一个正整数化为二进制数,在此二进制数中,我们将数字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两类数的个数。

【输入】
(无)

【输出】
一行,包含两个整数,分别是A类数和B类数的个数,中间用单个空格隔开。

【输入样例】
(无)
【输出样例】
(无)

【代码】
[C++] 纯文本查看 复制代码
#include <iostream>
#include <cstdio>
using namespace std;

bool cmp(int num) {
	int a = 0, b = 0;
	while (num) {
		if (num % 2 == 1)
			a++;
		else
			b++;
		num /= 2;
	}
	return a > b;
}

int main() {
	int a = 0;
	for (int i = 1; i <= 1000; i++) {
		if (cmp(i))
			a++;
	}
	cout << a << " " << 1000 - a;
}


Just do it.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表