码迷,mamicode.com
首页 > 其他好文 > 详细

1412:二进制分类

时间:2020-02-01 10:44:59      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:mic   bool   ace   mes   style   alt   include   return   资料   

               技术图片

  我首先的思路是定义一个函数,来将输入的数转化为二进制的数,再判断二进制数中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 }

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

1412:二进制分类

标签:mic   bool   ace   mes   style   alt   include   return   资料   

原文地址:https://www.cnblogs.com/zkw666/p/12247589.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!