【数学】【牛客】石子

来源:牛客网

题目描述

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");
    }
}
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页