题意:还是取石子游戏,不过取的个数有限制
用sg函数的定义求出每堆的sg函数
然后^
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int sg[10010], w[10010];
int s[200];
int k;
void get()
{
memset(sg,0,sizeof(sg));
for(int i=1;i<10001;i++)
{
memset(w,0,sizeof(w));
for(int j=0;j<k;j++)
{
if(i>=s[j]) w[sg[i-s[j]]]=1;
}
for(int j=0;;j++)
{
if(!w[j])
{
sg[i]=j;
break;
}
}
}
}
int main()
{
while(~scanf("%d",&k))
{
if(k==0) break;
for(int i=0;i<k;i++) scanf("%d",&s[i]);
get();
int m;
cin>>m;
for(int i=0;i<m;i++)
{
int f;
scanf("%d",&f);
int ans=0;
for(int j=0;j<f;j++)
{
int a;
scanf("%d",&a);
ans^=sg[a];
}
if(ans) printf("W");
else printf("L");
}
printf("\n");
}
}