codefroces 841B Godsend

想法题

如果数的和为奇数 那么first直接全部拿走

如果数的和为偶数,分两种情况:

1.如果每个数都是偶数 那么first无法拿走任何数 second赢

2.如果存在奇数(肯定是偶数个):

   ①如果某个奇数在第一个位置或者在最后一个位置

   例如3...5...7...1...(省略号部分为偶数,可以一个可以多个也可以没有)

   那么first拿上面这个序列的时候 就可以除了3全部拿走 所以first赢

  ②如果奇数都不在第一个或者最后一个位置

    ...3...5...7...9...  first可以拿得只剩下9...或者...3 无论second怎么拿sum为偶数的序列 再轮到first时first总可以把所有数都拿走

    所以如果存在奇数的情况first恒赢


#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
#include<stack>
#include<queue>
#include<cmath>
#include<stack>
#include<list>
#include<map>
#include<set>
typedef long long ll;
using namespace std;

int a[1000005];
int main()
{
    int i,n;
    scanf("%d",&n);
    int odd=0,even=0;ll sum=0;
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        sum+=a[i];
        if(a[i]&1)
        {
            odd++;
        }
        else even++;
    }
    if(sum&1)
    {
        printf("First");
        return 0;
    }
    if(odd==0)
    {
        printf("Second");
        return 0;
    }
    printf("First");
    return 0;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值