解题思路:利用这个函数就可以计算一个数的二进制有多少个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;
}
本文介绍了一个编程比赛中的解密题目,任务是找出一组数字中二进制位数1最少的数,作为加密文件的密钥。文章提供了完整的解题思路与代码实现。

被折叠的 条评论
为什么被折叠?



