感觉可以算是范围-Nim游戏
打表找规律,或者写几个sg答案来找规律。
解博弈论的题目看数据范围。
一般数据范围在1000以内可以用sg函数解决。若在10000以内sg函数不一定能解,时间复杂度不好说。
10000以上,sg函数就很难说了,一用就超时。这时候就要暴力打表找规律。
这道题数据范围达到int了,打个表找找规律。
找到了x%(m+1)==0时就是Lost,否则就是Win。
#include <iostream>
using namespace std;
int n,m;
int sg(int x)
{
return x%(m+1);
}
int main()
{
int t;
cin>>t;
while(t--)
{
cin>>n>>m;
int res=0;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
res^=sg(x);
}
if(res==0)cout<<"Lost"<<endl;
else cout<<"Win"<<endl;
}
return 0;
}