第一次做这道题的时候,栽到了“最多”上,没有看清题意,贸然的以为俩人每次都取m个石子了,结果。。历经无数次的wrong answer后。。终于发现原来是每次每人最多趣m个石子。。Orz
那么正确的做法是什么呢?——
思路:
要想让TT赢,必须保证最后一次TT拿的时候剩下的石子数小于m,即倒数第二次拿时,石头有m+1个,整理得到公式:n=(m+1) b + a:第一次TT取a个,第二个人取1<=t<=m个,再轮到TT取时,她/他只要取k=(m+1)- t个就可以保证最后一次一定是TT取~必胜公式!!当然若m>n,则TT也肯定赢~
代码:
#include <iostream>
using namespace std;
int main()
{
int m;
cin>>m;
while (m--)
{
int a,b;
cin>>a>>b;
if (a % ( b + 1 ) == 0 && a>b)
{
cout<<"Lose"<<endl;
}
else
cout<<"Win"<<endl;
}
return 0;
}
ps:若还是不太明白,请看大神的解释:
http://www.cnblogs.com/kuangbin/archive/2011/08/27/2155827.html