// 活动地址: 牛客春招刷题训练营 - 编程打卡活动 #include<iostream> #include<algorithm> #include<set> using namespace std; void solve(){ int n,m; // 看见这题的第一眼 哇怎么这么熟悉啊 噢 原来是 之前学的一个函数啊 就是__builtin_popcount 函数 它就是直接求一个数的二进制里面有多少个一 while(cin>>n){ m=0; while(n){ n=n&(n-1); m++; } // 这样跟快 就是每次都会去除掉n的二进制里的一个1 cout<<m<<"\n"; } // 但这题还有一个跟快的方法就是 用位运算 //cout<<__builtin_popcount(n)<<"\n"<<__builtin_popcount(m)<<"\n"; } int main(){ int T=1; while(T--){ solve(); } return 0; } // 活动地址: 牛客春招刷题训练营 - 编程打卡活动