奇偶数
Background
本题为 Special Judge
Description
给定一个n(2≤n≤50) 个正整数组成的数组 a=[a1,a2,…,an](1≤ai≤10^3)。
您可以对其进行两种类型的操作:
- 1.将每个奇数位置上的元素 +1:a1:=a1+1,a3:=a3+1,a5:=a5+1,...
- 2.将每个偶数位置上的元素 +1:a2:=a2+1,a4:=a4+1,a6:=a6+1,...
确定经过任意次数的操作后,是否有可能使最终数组仅包含偶数或仅包含奇数。换句话说,确定是否可以使数组的所有元素在经过任意次数的操作后具有相同的奇偶性。
请注意,您可以多次执行这两种类型的操作(甚至没有)。不同类型的操作可以执行不同的次数。
Format
Input
第一行包含一个整数 t(1≤t≤100) — 测试用例的数量。
每个测试用例的第一行包含一个整数 n(2≤n≤50) — 数组的长度。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an(1≤ai≤10^3) — 数组的元素。
请注意,执行操作后,数组中的元素可能会大于 10^3.
Output
若经过若干次操作后能实现数组具有相同的奇偶性,则输出 YES,否则输出 NO。
Samples
输入数据 1
4
3
1 2 1
4
2 2 2 3
4
2 2 2 2
5
1000 1 1000 1 1000
Copy
输出数据 1
YES
NO
YES
YES
Copy
样例解释
对于第一个测试用例,我们可以使用偶数位置递增元素,获得数组 [1,3,1],它只包含奇数,所以答案是 YES。
对于第二个测试用例,我们可以证明在执行任意数量的操作后,我们将无法使所有元素都具有相同的奇偶性,因此答案是 NO。
对于第三个测试用例,所有元素已经具有相同的奇偶性,因此答案是 YES。
对于第四个测试用例,我们可以执行一次操作,将奇数位置的所有元素加 1,从而获得数组 [1001,1,1001,1,1001],所有元素都变为奇数,因此答案为 YES。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t,n,x;
int p=0,k=0;
cin>>t;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x;
if(i%2==0)
{
if(x%2==0) p++;
}
else if(x%2==0) k++;
}
if(p==0 && k==n-n/2) cout<<"YES\n";
else if(p==0 && k==0) cout<<"YES\n";
else if(k==0 && p==n/2) cout<<"YES\n";
else if(p==n/2 && k==n-n/2) cout<<"YES\n";
else cout<<"NO\n";
p=0;
k=0;
}
return 0;
}