zoukankan      html  css  js  c++  java
  • 1412:二进制分类

                   

      我首先的思路是定义一个函数,来将输入的数转化为二进制的数,再判断二进制数中1多还是0多,从而判断是A类数还是B类数。

    不过在二进制转化有些困难,就查了查资料:

           

    例如:29。用短除法,不断除以2,每次将余数写在后面,直到最后商为0时,停止,从下至上读余数,就是29的二进制数。

    有了这个概念,定义函数就容易多了。

    我用bool定义的:

    bool s(int x)
    {
        int a=0,b=0;
        while(x>0)
        {
            if(x%2==1)
                a++;
            else
                b++;
            x/=2;
        }
        return a>b;
    }

    所以,如果s(x)为真,则x是A类数,否则x为B类数。

     1 #include<iostream>
     2 using namespace std;
     3 bool s(int x);
     4 int main()
     5 {
     6     int a=0,b=0;
     7     int i;
     8     for(i=1;i<=1000;i++) 
     9         if(s(i))
    10             a++;
    11         else
    12             b++;
    13     cout<<a<<" "<<b<<endl;
    14     return 0;
    15 }
    16 bool s(int x)
    17 {
    18     int a=0,b=0;
    19     while(x>0)
    20     {
    21         if(x%2==1)
    22             a++;
    23         else
    24             b++;
    25         x/=2;
    26     }
    27     return a>b;
    28 }

    我做这个题最大的收获是了解了一种新的十进制转化为二进制的方法。

  • 相关阅读:
    01--DNS服务器3
    01--DNS服务器2
    装配bean
    实现二级域名
    apache反向代理
    struts拓展restful
    restful是什么
    struts的声明式异常处理
    linux常用命令之压缩打包
    linux常用命令之文件系统
  • 原文地址:https://www.cnblogs.com/zkw666/p/12247589.html
Copyright © 2011-2022 走看看