二进制分类 NOIP1995复赛 普及组 第三题

柔情只为你懂 2022-03-30 10:16 352阅读 0赞

描述

若将一个正整数化为二进制数,在此二进制数中,我们将数字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类数的个数,中间用单个空格隔开。

样例输入

  1. (无)

样例输出

  1. (不提供)

来源

NOIP1995复赛 普及组 第三题

  1. #include<cstdio>
  2. int A,B;
  3. bool num(int n)
  4. {
  5. int a=0,b=0;
  6. while(n!=0)
  7. {
  8. if(n%2 == 1)
  9. a++;
  10. else
  11. b++;
  12. n=n/2;
  13. }
  14. return a > b;//如果a>b,返回值为true,否则为false
  15. }
  16. int main()
  17. {
  18. for(int i = 1; i <= 1000; ++i)
  19. {
  20. if(num(i)) A++;
  21. else B++;
  22. }
  23. printf("%d %d",A,B);
  24. return 0;
  25. }

发表评论

表情:
评论列表 (有 0 条评论,352人围观)

还没有评论,来说两句吧...

相关阅读

    相关 NOIP普及初赛型分析

    初赛的考察内容的一部分是计算机的基础知识,比如进制转换,工作原理,算法原理、历史事件名人等。这些对于大部分第一次参加noip的同学来说应该比较陌生,这样的知识只能通过平时的积累