首页 > 代码库 > 36:二进制分类

36:二进制分类

36:二进制分类

  • 查看
  • 提交
  • 统计
  • 提问
总时间限制: 
1000ms
 
内存限制: 
65536kB
描述

若将一个正整数化为二进制数,在此二进制数中,我们将数字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类数的个数,中间用单个空格隔开。
样例输入
(无)
样例输出
(不提供)
来源
NOIP1995复赛 普及组 第三题
 1 #include<iostream> 2 using namespace std; 3 int alei; 4 int blei; 5 int main() 6 { 7     for(int i=1;i<=1000;i++) 8     { 9         int yi=0;10         int ling=0;11         int now=i;//记录i的值 12         while(now!=0)13         {14             int r=now%2;15             if(r==1)yi++;16             else if(r==0)ling++;17             now=now/2;18         }19         if(yi>ling)alei++;20         else blei++;21     }22     cout<<alei<<" "<<blei;23     return 0;24 }

 

36:二进制分类