题目大意:有两个非负整数序列,,对于每个,你可以选择一个,并使得 求出的最小值
思路:首先观察一下数据范围,或运算之后最终结果肯定也小于512,并且,那我们可以直接暴力枚举,那么在枚举每个的情况下,只要满足,对于每个都找到一个符合即可,有一个不符合就不成立,枚举下一个...直到找到第一个满足的即为答案
Code:
#include <bits/stdc++.h>
using namespace std;
const int N=250,mod=1e9+7;
typedef long long ll;
int n,m,a[N],b[N];
bool check(int x){
for(int i=1;i<=n;i++){
bool flag=true;
for(int j=1;j<=m;j++){
if(((a[i]&b[j])|x)==x){
flag=false;
break;
}
}
if(flag) return false;
}
return true;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=m;i++) cin>>b[i];
for(int i=0;i<=512;i++){
if(check(i)){
cout<<i<<endl;
break;
}
}
return 0;
}