Codeforces Round #738 (Div. 2)

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

上一篇:《Codeforces Round #738 (Div. 2)》


下一篇:Codeforces Round #738 (Div. 2)