题解:Anti-SG游戏—谁先走最后一步谁输
先手必胜当且仅当:
1.石子数全都为1并且SG值为0,
2.石子数不全为1并且SG值不为0.
要是想了解证明过程,就去阅读贾志豪的博弈论,里面有详细的证明过程。
#include<bits/stdc++.h>
#include<cstring>
using namespace std;
#define LL long long
int main()
{
int t;
scanf("%d",&t);
LL n;
while(t--)
{
LL sum = 0,ct = 0,a;
scanf("%d",&n);
for(int i = 0 ; i < n ; i++)
{
cin>>a;
if(a>1) ct++;
sum^=a;
}
if(ct == 0&&sum == 0) printf("1\n");
else if(ct>0&&sum!=0) printf("1\n");
else printf("2\n");
}
return 0;
}