来源:牛客网
题目描述
Alice 和 Bob 从小就一起玩石子。
有一天,他们又想愉快的玩一个石子游戏。
一共有
n
n
n 堆石子,第
i
i
i 堆石子有
a
i
a_i
ai个,两人轮流操作。
Alice 走先手,每个人每个回合只能对一堆石子进行操作,Alice 每次操作只能拿偶数个石子,Bob 每次操作只能拿奇数个石子, 每次操作至少拿走一个石子,直到一方无法进行任何操作,无法操作的人失败。
假设Alice与Bob都是绝顶聪明的,如果 Alice 可以获胜,那么输出 YES,否则输出 NO。
输入描述:
多组数据。对于每组数据,第一行输入一个正整数 n n n,第二行输入 n n n 个正整数,第 i i i 个数表示 a i a_i ai。
输出描述:
对于每组数据,每行输出一个字符串YES或NO。
示例1
输入
2
2 1
输出
NO
示例2
输入
1
6
输出
YES
备注:
对于
20
%
20\%
20%的数据,数据组数为
1
1
1且
n
=
1
n=1
n=1
对于另外
20
%
20\%
20%的数据,
n
=
1
n=1
n=1;
对于另外
20
20%
20的数据,石子数都为
1
1
1;
对于
100
%
100\%
100%的数据
n
n
n的和小于
1000000
1000000
1000000,石子数小于
1000000000
1000000000
1000000000
解题思路
虽然我不会证明,但是可以发现除了只有一堆石子且这堆石子是偶数个,才是yes,其余情况都是no
考试的时候想出来了, 结果没看到多组数据,惨烈(20分)
Code
#include <iostream>
#include <cstdio>
using namespace std;
int n, x, y;
int main(){
while (scanf ("%d", &n) != EOF){//多!组!数!据!
scanf ("%d", &x);
for (int i = 1; i < n; i++)
scanf ("%d", &y);
if (n != 1 || x % 2)
printf("NO\n");
else printf ("YES\n");
}
}