#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所组成的十进制的值。#牛客春招刷题训练营#