题意
有一个数组a,两个人玩游戏,游戏规则是第一个人可以拿走数组中的一个子数组并且子数组的和必须是奇数,第二个人可以拿走数组中的一个子数组并且子数组的和必须是偶数。两个人轮流拿,如果谁不能拿,那这个人就输了。如果两个人都采用最好的策略,最后谁赢?
解题思路
如果整个数组和为奇数,那么第一个人肯定赢。
如果整个数组和为偶数,那么假设第一个人可以取出和为奇数,那么剩下的和还是奇数,所以还是第一个人赢,如果第一个人取不出来,那么第二个人赢。判断第一个人能不能取出来只需统计数组中是否存在奇数就可以。
参考代码
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,x;
while (~scanf("%d",&n)){
int cnt=0;
while (n--){
scanf("%d",&x);
if (x%2==1) cnt++;
}
if (cnt>=1) printf("First\n");
else printf("Second\n");
}
return 0;
}