传送门
题意:
思路:
2^9==512
最小值不会超过512 ,直接暴力枚举一下答案,如果符合直接输出即可
关键是什么样的答案符合
因为ans=c1|c2|c3|c4|c5…
那么ans&c1==c1一定成立
ci=ai&bj,那就看一下对于每一个ai是否都能找到bj(ci=ai&bj)满足ans&ci=ci
代码:
int main()
{
std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int n,m;
cin>>n>>m;
rep(i,1,n)cin>>a[i];
rep(i,1,m)cin>>b[i];
int ans=0;
for(int k=0;k<=512;k++){
int flag=1;
for(int i=1;i<=n;i++){
int f=0;
for(int j=1;j<=m;j++){
if((a[i]&b[j]&k)==(a[i]&b[j])){
f=1;break;
}
}
if(f==0){//有一个不满足就不行
flag=0;break;
}
}
if(flag==1){
ans=k;
break;
}
}
cout<<ans<<endl;
return 0;
}