南洋理工OJ ——23题 取石子

来源:互联网 发布:养老上市公司 知乎 编辑:程序博客网 时间:2024/04/29 20:50

         第一次做这道题的时候,栽到了“最多”上,没有看清题意,贸然的以为俩人每次都取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

                   

0 0
原创粉丝点击