zoukankan      html  css  js  c++  java
  • [华为机试] 计算二进制数中1的个数

    将整数转化为二进制数,要除2取余,余1这一位就是1,整除这一位就是0,存在两种特殊情况,就是输入的数是1或者0,因为<2所以没法做整除判断,所以要在程序开头做个判断,如果输入的是0,直接返回1的个数为0,因为整除法得到1的个数要比正常的少一个,所以最终要给1的个数+1,所以输入的数是1也可以算到这种情况里

    题目描述

    请实现如下接口

    public static int findNumberOf1( int num)

    {

    /* 请实现 */

    return 0;

    } 譬如:输入5 ,5的二进制为101,输出2

     

    涉及知识点:
     
    注意多组输入输出!!!!!!
    #include<iostream>
    
    using namespace std;
    
    int FindNumOfOne(int InputNum);
    
    int main(void)
    {
        int InputNum;
        while(cin>>InputNum)
            cout<<FindNumOfOne(InputNum)<<endl;
        
        return 0;
    }
    
    int FindNumOfOne(int InputNum)
    {
        int OneNum=0;
        if(0==InputNum)
            return OneNum;
        while(0!=InputNum/2)
        {
            if(1==InputNum%2)
                OneNum++;
            InputNum/=2;
        }
        return OneNum+1;
    }

    #include<iostream>
    #include<vector>
    
    using namespace std;
    
    int main(void)
    {
        int InputNum;
        int Temp;
        cin>>InputNum;
        
        std::vector<int> BinaryOne;
        while(0!=InputNum/2)
        {
            Temp=InputNum%2;
            if(Temp==1)
                BinaryOne.push_back(Temp);
            InputNum/=2;
        }
        cout<<BinaryOne.size()+1<<endl;
        return 0;
    }

    题目描述

    请实现如下接口

    public static int findNumberOf1( int num)

    {

    /* 请实现 */

    return 0;

    } 譬如:输入5 ,5的二进制为101,输出2

     

    涉及知识点:
     
    注意多组输入输出!!!!!!
  • 相关阅读:
    centos6.8防火墙模块未加载
    CentOS6.8下安装Redis
    CentOS6.8下安装mysql
    git使用手册
    oracle锁表与解表
    原生js(二)
    原生js(一)
    学习计划调整
    jQuery Sizzle选择器(三)
    jQuery Sizzle选择器(二)
  • 原文地址:https://www.cnblogs.com/wangtianning1223/p/13698990.html
Copyright © 2011-2022 走看看