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

         第一次做这道题的时候,栽到了“最多”上,没有看清题意,贸然的以为俩人每次都取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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值