1127: 【入门】A类多?B类多?
时间限制: 1 Sec 内存限制: 16 MB
提交: 3537 解决: 2406
[提交] [状态] [讨论版] [命题人:外部导入]
题目描述
一个自然数转换成二进制数后,如果1的个数比0的个数多,则称为A类数,否则称为B类数。输入n(n<=10000),输出1到n之间A类数、B类数各多少个。
输入
输入一个整数n(n<=10000)
输出
两个整数,为A类数和B类数的个数(用空格隔开)。
样例输入
11
样例输出
6 5
题解如下
#include<stdio.h>
#include<string.h>
int main()
{
int zhi;
scanf("%d",&zhi);
int ge_shu=0;
for(int m=1;m<=zhi;m++)
{
int n;
n=m;
if(n==0)
{
// printf("0");
}
else
{
int count_1=0;
int count_0=0;
for(int i=0; ;i++)
{
if(n%2==0)
{
n/=2;
count_0++;
}
else if(n%2==1)
{
//printf("\n");
n/=2;
count_1++;
}
if(n==0)
break;
}
//printf("%d %d",count_1,count_0);
if(count_1>count_0)
{
//printf("@a\n");
ge_shu++;
}
}
}
printf("%d %d",ge_shu,zhi-ge_shu);
return 0;
}