https://codeforces.com/contest/1559/problem/A
A. Mocha and Math
题意:给你一个长度为n的数组,你可以指定一个范围[l,r],让0<=i<=r-l范围内的数,变成a(l+i)&a[r-i].你可以操作任意次,问你操作完后,这个数组里最小的值是多少。
思路:考察&的性质(两个为1时才为1,否则就是0),那么就考虑如果每个数都&一遍,那么得出的结果一定时最小的。
代码:
#include<bits/stdc++.h>
#define ll long long
#define hh 0x3f3f3f3f
const int maxn=1e5+5;
using namespace std;
inline int read()
{
ll s=0,f=1;
char c=getchar();
while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){s=(s<<3)+(s<<1)+c-'0';c=getchar();}
return s*f;
}
void solve()
{
int n,ans=0;
cin>>n;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
if(i==1)
ans=x;
else
ans=ans&x;
}
cout<<ans<<endl;
}
int main()
{
ios::sync_with_stdio(0);cout.tie(0);cin.tie(0);
int t;
cin>>t;
while(t--)solve();
return 0;
}