华为OJ:求int型正整数在内存中存储时1的个数

来源:互联网 发布:noi算法优化 编辑:程序博客网 时间:2024/05/24 04:17

求int型正整数在内存中存储时1的个数
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。

输入描述:
输入一个整数(int类型)

输出描述:
这个数转换成2进制后,输出1的个数

输入例子:
5

输出例子:
2

解答:#include <iostream>#include <vector>using namespace std;int main(){    int n;    vector<int>v;    while(cin>>n)    {        int count = 0;        v.clear();        while(n)        {            v.push_back(n%2);            n/=2;        }        for(vector<int>::iterator it=v.begin();it!=v.end();++it)        {            if(*it)                 count++;        }        cout<<count<<endl;    }    return 0;}解法二其实这道题的原意是想让编程人员使用位运算,代码如下:#include <iostream>using namespace std;int main(){    int n;    while(cin>>n)    {        int count = 0;        while(n)        {            n = n&(n-1);            count++;        }        cout<<count<<endl;    }    return 0;}
0 0