Godsend(博弈)

VJ链接

题意:给出长度为n的数组,两个人做游戏。第一个人每次只能取出和为奇数的连续子串,第二个人每次只能取出和为偶数的连续子串。每人取出之后,剩余子串相互连接。最后谁无法行动失败。
思路:根据奇数偶数的性质解题。1.首先如果所有数之和为奇数,第一个人直接获胜。 2.所有数字之和为偶数,但是这些数中没有奇数子串,也就是说没有奇数,此时第二个人获胜。 3.所有数字之和为偶数,并且数组中存在奇数,则第一个人必胜。 因为:此时第一个人拿走这个奇数之后,剩下的所有数之和必然为奇数(偶数-奇数=奇数),若剩下的数字中存在偶数子串,则第二个人坚持一回合(若没偶数,小二出局),然后,由于剩余所有数字之和为奇数,所以第一个人一次拿完(小二仍然出局)。

代码

#include<stdio.h>
int main()
{
    int t,f=0,x;
    long long s=0;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&x);
        s+=x;
        if(x&1) f=1;  //数组中存在奇数
    }
    if((!(s&1)&&(f))||s&1)
      printf("First\n");
    else
      printf("Second\n");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值