小A的位运算
题目链接:https://ac.nowcoder.com/acm/problem/23483
1 #include<bits/stdc++.h> 2 using namespace std; 3 long long a[5000010]; 4 int n; 5 bool cmp(long long a,long long b){ 6 return a>b; 7 } 8 long long ans,cnt; 9 int main(){ 10 cin >> n; 11 for(int i=1;i<=n;++i){ 12 cin >> a[i]; 13 } 14 sort(a+1,a+n+1,cmp);//从大到小排序 15 for(int i=1;i<=n;++i){ 16 if( (ans|a[i])>ans && cnt+1<=n-1 ){//当所有数都可以参与或运算时,最小数就要除去 17 ans=ans|a[i]; 18 cnt++;//cnt用于计数参与或运算的个数 19 } 20 } 21 cout << ans ; 22 return 0; 23 }