#include <iostream>
using namespace std;

int lowbit(int x) {
    return x & (-x);
}

int main() {
    int n;
    cin >> n;

    int ans = 0;
    while(n != 0) {
        ans ++;
        n -= lowbit(n);
    }
    cout << ans << endl;
    return 0;
}
// 64 位输出请用 printf("%lld")

这里用了一个lowbit运算来优化代码,不必一位一位的去判断。补充知识:lowbit运算是返回最低位的那个1及其后面的0所组成的十进制的值。#牛客春招刷题训练营#