例如:(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类数
输入格式
一个整数n(n<=10000)
输出格式
1~n范围内A类数的个数和B类数的个数
输入/输出例子1
输入:
1000
输出:
538 462
#include<bits/stdc++.h>
using namespace std;
int n,ans1=0,ans2=0,cnt1,cnt2,j;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
j=i,cnt1=0,cnt2=0;
for(;j>0;j/=2)
{
if(j%2==1) cnt1++;
else cnt2++;
}
if(cnt1>cnt2) ans1++;
else ans2++;
}
printf("%d %d",ans1,ans2);
return 0;
}
451

被折叠的 条评论
为什么被折叠?



