题目描述
若将一个正整数化为二进制数,在此二进制数中,我们将数字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数组