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