本题实际上考察的是十进制转化为二进制。利用multiset容器来存储二进制,提高查找速度。

#include <iostream>
#include <set>
using namespace std;

int main() {
    int N;
    cin >> N;
    multiset<int> res;
    int rem = N % 2;
    N /= 2;
    res.insert(rem);
    while (N != 0) {    
        rem = N % 2;
        N /= 2;
        res.insert(rem);
    }
    int count;
    count = res.count(1);
    cout << count;
    
    return 0;
}