题目描述
若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类数,否则就称其为B类数。
例如:
十进制数13转化为二进制数是1101,其中1的个数为3,0的个数为1,则称此数为A类数;
十进制数10转化为二进制数是1010,其中1的个数为2,0的个数也为2,称此数为B类数;
十进制数24转化为二进制是11000,其中1的个数为2,0的个数为3,则称此数为B类数;
程序要求:求出1~1000之中(包括1与1000),全部A、B两类数的个数。
输入格式
无
输出格式
一行,包含两个整数,分别是A类数和B类数的个数,中间用单个空格隔开。
输入输出样例
输入样例1:
无
输出样例1:
自己算
【耗时限制】1000ms 【内存限制】64MB
//
//Created by Carlgood.
//
//Note:This program is written in version DEV-C++ 5.11.
//Subject source:"hppt://oj.codingle.cn"
# include <iostream>
# include<cmath>
# include<string>
# include<cstring>
# include<cstdio>
# include<algorithm>
# include<sstream>
# define This_program_is_written_by_Carlgood_Programming_Studio 9876543210
using namespace std;
bool twobase(long long n)
{
int onesum=0,zerosum=0;
while(n)
{
if(n%2)
{
onesum++;
}
else
{
zerosum++;
}
n/=2;
}
if(onesum>zerosum) return true;
return false;
}
int main()
{
int asum=0,bsum=0;
for(int i=1;i<=1000;i++)
{
if(twobase(i)==true)
{
asum++;
}
else
{
bsum++;
}
}
cout<<asum<<" "<<bsum;
}