#include<iostream>
using namespace std;
int main() {
	long long n = 0,ret = 0;
	cin >> n;
	for (int i = 0; i <= 31; i++) ret += n >> i & 1;
	cout << ret;
}

#牛客春招刷题训练营#

通过右移加上&1一个数可以得到这个数二进制状态下最低位的数,从最低位到最高位依次遍历,并记录1的个数即可得到答案。