A. Mocha and Math
题目传送门:
题面:
题目大意:
给你一堆数字,你可以选择一个区间
[
l
,
r
]
[l,r]
[l,r],把区间内
a
l
+
i
a_l+i
al+i用
a
l
+
i
&
a
r
−
i
a_l+_i\&a_r-_i
al+i&ar−i替换。
问你最后序列内最大值的最小值是多少。
思路:
A&B≤A
A&B≤B
所以最佳策略就是把整个序列全部&完,那肯定剩下那个最小。
AB题别想太多。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[200];
int main() {
int T;
scanf("%d", &T);
while (T--) {
int n;
scanf("%d", &n);
scanf("%d", &a[1]);
int ans = a[1];
for (int i = 2; i <= n; i++) {
scanf("%d", &a[i]);
ans &= a[i];
}
printf("%d\n",ans);
}
}