题目
There are n piles of stones, where the i-th pile has ai stones. Two people play a game, where they take alternating turns removing stones.
In a move, a player may remove a positive number of stones from the first non-empty pile (the pile with the minimal index, that has at least one stone). The first player who cannot make a move (because all piles are empty) loses the game. If both players play optimally, determine the winner of the game.
Input
The first line contains a single integer t (1≤t≤1000) — the number of test cases. Next 2t lines contain descriptions of test cases.
The first line of each test case contains a single integer n (1≤n≤105) — the number of piles.
The second line of each test case contains n integers a1,…,an (1≤ai≤109) — ai is equal to the number of stones in the i-th pile.
It is guaranteed that the sum of n for all test cases does not exceed 105.
Output
For each test case, if the player who makes the first move will win, output “First”. Otherwise, output “Second”.
Example
Input
7
3
2 5 4
8
1 1 1 1 1 1 1 1
6
1 2 3 4 5 6
6
1 1 2 1 2 2
1
1000000000
5
1 2 2 1 1
3
1 1 1
Output
First
Second
Second
First
First
Second
First
Note
In the first test case, the first player will win the game. His winning strategy is:
The first player should take the stones from the first pile. He will take 1 stone. The numbers of stones in piles will be [1,5,4].
The second player should take the stones from the first pile. He will take 1 stone because he can’t take any other number of stones. The numbers of stones in piles will be [0,5,4].
The first player should take the stones from the second pile because the first pile is empty. He will take 4 stones. The numbers of stones in piles will be [0,1,4].
The second player should take the stones from the second pile because the first pile is empty. He will take 1 stone because he can’t take any other number of stones. The numbers of stones in piles will be [0,0,4].
The first player should take the stones from the third pile because the first and second piles are empty. He will take 4 stones. The numbers of stones in piles will be [0,0,0].
The second player will lose the game because all piles will be empty.
解释
参考了一些博客
- 在一个大于1的堆中,全部拿完,那先手赢
- 在两个都大于1的堆中,先手在第一堆拿到剩下一个,然后后手必须拿那最后一个,先手再拿第二堆的全部,先手赢
这里相当于是不出现1的情况下,先手能够控制胜负
如果出现一个1,那么,其实就是让先手后手的控制权交换,直到,出现非1的堆,
如果出现非1的堆,它后面无论是1还是不是1,那控制权不变
简单讲,规律大概是:
从左往右扫描,如果出现一个非1的数,那统计这个数前面是1的堆的数量n,n是偶数,那就是先手赢,奇数就是后手赢
如果全部都是1,那么n是偶数是后手赢,奇数则是先手
代码
#include<bits/stdc++.h>
using namespace std;
int cb[1000000];
int main()
{
int t;
cin >> t;
while(t--)
{
int n,x = 0,sum = 0;
cin>>n;
for(int i=0 ; i<n ; i++){
cin>>cb[i];
if(cb[i] == 1 && x == 0){
sum++;
}else{
x++;
}
}
if(x == 0)sum++;
if(sum%2 == 0 ){
printf("First\n");
}else{
printf("Second\n");
}
}
return 0;
}
参考:
https://blog.csdn.net/jziwjxjd/article/details/107503632