二进制中1的个数

给定一个长度为 n 的数列,请你求出数列中每个数的二进制表示中 1 的个数。

输入格式

第一行包含整数 n。

第二行包含 n 个整数,表示整个数列。

输出格式

共一行,包含 n 个整数,其中的第 i 个数表示数列中的第 i 个数的二进制表示中 1 的个数。

数据范围

1≤n≤100000
0≤数列中元素的值≤1e9

输入样例:

5
1 2 3 4 5

输出样例:

1 1 2 1 2

#include <iostream>
using namespace std;
int lowbit(int x)
{
    return x&-x;
}

int main()
{
    int n;
    cin >> n;
    while(n--)
    {
        int x, s = 0;
        cin >> x;
        for(int i = x; i; i -= lowbit(i)) s++;
        cout<< s <<" ";
    }
}
#include<iostream>//这里是常规解法
using namespace std;
int cnt;
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        cnt=0;
        int t;
        cin>>t;
        while(t)
        {
            if(t%2) ++cnt;
            t/=2;
        }
        cout<<cnt<<' ';
    }
    return 0;
}