Description

他刚刚理解&的用法(and),准备趁热打铁,做做下面这题:
给定一个长度为n的序列a,你需要从中挑出任意多个(可以0个)数,使得他们&起来值最大。
看起来挺简单的,可是牛牛就是不会做。
比如说选出五个数1,3,5,7,9,他们&起来的值就是1&3&5&7&9=1

Solution

找最大值,多个数字相互做按位与,结果 <= 原来的数字。

Code

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int a[N];
int main() {
  int T; cin >> T;
    while(T--) {
        int n; cin >> n;
        for(int i = 1; i <= n; i++) {
            cin >> a[i];
        }
        sort(a + 1, a + 1 + n);
        cout << a[n] << "\n";
    } 
    return 0;
}