题意:给出长度为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;
}