36:二进制分类

时间:2022-05-08
本文章向大家介绍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 }