您的位置:首页 > 编程语言 > Go语言

Codeforces 841B Godsend

2017-09-16 14:34 281 查看

题目链接:CF-841B

很有意思的一道题。有一个n个数字的数组,AB两人轮流从数组中取出连续的一段,其中A取的这一段数字之和必须是奇数,而B必须是偶数,谁不能取走数字则输。
先从简单的情况分析,如果这个数组的sum是奇数,那么A直接全部取走即可。A嬴。
如果sum是偶数,如果这n个数字全是偶数,那么一开始A没有办法拿,A输。
如果sum是偶数,但是这n个数字中有奇数,那么一定有偶数个奇数,A先拿走一个奇数,剩余数字之和为奇数,B不能全部拿走,只能拿走一段和为偶数的数组,那么剩下的数字之和仍然为奇数,A全部拿走,A嬴。
#define _CRT_SECURE_NO_WARNINGS
#define ll long long
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <string.h>
#include <algorithm>

using namespace std;

int main() {
int n;
ll sum = 0;
scanf("%d", &n);
bool flag=false;
for (int i = 0;i < n;++i)
{
int v;
scanf("%d", &v);
if (v % 2)
flag = true;
sum += v;
}
if (sum % 2)
printf("First\n");
else if (flag)
printf("First\n");
else
printf("Second\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: