链接:http://icpc.upc.edu.cn/problem.php?cid=1849&pid=9
题意:n堆石子,三个人轮流选一堆拿若干个,后两个人都想让先手输,问先手最后是否能赢。
思路:打表或者画画就会发现。全是1的话,当然要看n是否能整除3。只有一个不是1,其余全是1的情况是必胜态;如果前n-2个都是1,并且第n-1个为2,并且(n-2)不是3的倍数,也为必胜态,其余全是必败态。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e5+10;
int a[N];
int main()
{
int pos,n;
while(~scanf("%d",&n))
{
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
if(n==1)
{
printf("Win\n");
continue;
}
if(n==2)
{
if(a[1]==1||a[2]==1)
printf("Win\n");
else printf("Lose\n");
continue;
}
sort(a+1,a+1+n);
if(a[n]==1)
{
if(n%3==0)
printf("Lose\n");
else printf("Win\n");
}
else if(a[n-1]==1)
printf("Win\n");
else if(a[n-2]==1)
{
if(a[n-1]==2&&(n-2)%3!=0)
printf("Win\n");
else printf("Lose\n");
}
else printf("Lose\n");
}
return 0;
}