小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 } 

 

posted @ 2022-03-20 17:15  TFLSNOI  阅读(39)  评论(0编辑  收藏  举报