Ricky’s RealDan’s Ricky 博弈

链接:https://ac.nowcoder.com/acm/contest/322/H
来源:牛客网
 

题目描述

The 2019 is coming!Ricky 和 RealDan为了庆祝2018一年的成果,准备去大吃一顿,然而 Ricky 想吃火锅, RealDan 想吃海鲜。为了解决吃什么的难题, 他们向聪明的神秘人(出题人)寻求帮助,神秘人则给他们出了这样一个问题:

现在有 n 个娃娃机,第i(1 <= i <= n) 个娃娃机中有 a[i] 个娃娃。

规则如下:

Ricky 和 RealDan 轮流抓娃娃,

Ricky 每轮只能从其中一个娃娃机中抓走偶数个娃娃。

RealDan 每轮只能从其中一个娃娃机中抓走奇数个娃娃。

每人每轮至少抓走一个娃娃(他们都超级厉害),  Ricky 先开始抓。

他们在神秘人的教导下,都已经变得非常聪明。最后谁抓不了娃娃,谁就被视为 loser,并且还要把自己抓到的娃娃送给对方,loser也必须去Winner喜欢的地方吃饭。

现在他们找到你,想让你看一下他们究竟谁可以赢。

输入描述


第一行一个t,表示t组数据。

每组数据有两行:

第一行一个n(1 <= n <= 100000)代表n个娃娃机

下一行有n个数字,代表每一个娃娃机中的娃娃数量a[i] (1 <= a[i] <= 1e9)

输出描述


如果最后Ricky获胜,则输出“Ricky is Winner”(不包括双引号),反之则输出“RealDan is Winner”(不包括双引号)。

样例

输入

1
2
1 2

输出

RealDan is Winner

题解

只有一堆的情况下并且是偶数Ricky赢,否则RealDan赢。因为超过两堆的情况下,RealDan可以取奇数个,把偶数堆变成奇数,最后所有的都变成了奇数堆。 所有的都变成奇数堆之后,如果轮到Ricky取,Ricky不能取了,Ricky输,如果是轮到RealDan取,他可以将一个奇数堆变成0,。剩下的都还是奇数堆,然后Ricky不能取了,Ricky输。

代码

#include<algorithm>
#include <iostream>
#include<cstring>
#include <cstdio>
using namespace std;
typedef long long ll;
int t;
int main(){
    scanf("%d",&t);
    while(t--){
        int n;
        scanf("%d",&n);
        int x;
        for(int i=0;i<n;i++){
            scanf("%d",&x);
        }
        if(n==1&&x%2==0) printf("Ricky is Winner\n");
        else printf("RealDan is Winner\n");
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值