【数学】【牛客】石子

来源:牛客网

题目描述

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");
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值