因为题目已知至少要k-2个
假设我们取了k个,使得答案最大
那么因为对于每个数来说至少k-2个数在这位是1
因此我们只要任意选三个数,都能保证在每一位上都有至少一个数为1
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e5+10; ll a[N]; int main(){ int n; cin>>n; int i; for(i=1;i<=n;i++){ cin>>a[i]; } ll ans=0; if(n==1){ cout<<a[1]<<endl; } else if(n==2){ cout<<(a[1]|a[2])<<endl; } else{ int j,k; for(i=1;i<=n;i++){ for(j=i+1;j<=n;j++){ for(k=j+1;k<=n;k++) ans=max(ans,a[i]|a[j]|a[k]); } } cout<<ans<<endl; } }