按位贪心
7wwwwth
·
·
题解
#include<iostream>
#include<cstdio>
using namespace std;
int t,n,a[100010],b[100010];
/*
找到二进制中最高位是1的数 确定次高位的时候只是从二进制最高位是1的数里选 以此类推
*/
int work(){
cin>>n;
for (int i=1;i<=n;i++) cin>>a[i];
for(int k=20;k>=0;k--){//最高有20位
int top=0;
for(int i=1;i<=n;i++)
if(a[i]&(1<<k)) b[++top]=a[i];//判断a[i]是否为1
if(top>1){
for(int i=1;i<=top;i++) a[i]=b[i];
n=top;
}
}
return (a[1]&a[2]);
}
int main(){
cin>>t;
for (int i=1;i<=t;i++){
cout<<"Case #"<<i<<": "<<work()<<endl;
}
}