二进制分类题解

题目描述

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

样例

input

output

538  462

        这道题不是很难,题目中已经给定了A类数和B类数的特点,我们只需要先把1~i的数遍历出是否为A类数和B类数,然后在逐个判断,累加即可。

        首先,for循环把每一个i的情况都来保存在a数组里,(通过转二进制的方法)

memset(a,0,sizeof(a));

这句话把a数组

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值