解题思路:利用这个函数就可以计算一个数的二进制有多少个1:
int totalOne(int x){
int count = 0;
while(x){
x = x & ( x - 1 );
count++;
}
return count;
}
所以我们只需遍历一边即可;
#include <iostream>
using namespace std;
int totalOne(int x){
int count = 0;
while(x){
x = x & ( x - 1 );
count++;
}
return count;
}
int main(){
int n,a,step=1;
while (cin>>n){
int max=0,num=0,min=0xffffff;
for (int i=0;i<n;i++){
cin>>a;
num=totalOne(a);
if (num<min){
max=a;
min=num;
}
if (num==min&&max>a)
max=a;
}
cout<<"Case "<<step++<<": "<<max<<endl;
}
return 0;
}