邂逅明下 HDU - 2897

本文解析了一种名为巴什博奕的游戏策略,该游戏涉及三人轮流从一堆硬币中取走数量限定的硬币,最后取硬币者为败。文章通过分析游戏规则,提出了一种快速判断先手是否拥有必胜策略的方法,并提供了C++实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem description:

  有三个数字n,p,q,表示一堆硬币一共有n枚,从这个硬币堆里取硬币,一次最少取p枚,最多q枚,如果剩下少于p枚就要一次取完。两人轮流取,直到堆里的硬币取完,最后一次取硬币的算输。对于每一行的三个数字,给出先取的人是否有必胜策略,如果有回答WIN,否则回答LOST。

Input
不超过100000行,每行三个正整数n,p,q。Output对应每行输入,按前面介绍的游戏规则,判断先取者是否有必胜策略。输出WIN或者LOST。
Sample Input
7 2 4
6 2 4
Sample Output
LOST
WIN

思路:总是读题不准,原来是最后一个取的人会输,而且这个不能用动态规划做,会超时。
 这个其实是巴什博奕。
#include<iostream>
using namespace std;
int main(){
    int n,p,q;
    while(cin>>n>>p>>q){
        int s=n%(p+q);
        if(s==0)
            cout<<"WIN"<<endl;
        else if(s<=p)
            cout<<"LOST"<<endl;
        else
            cout<<"WIN"<<endl;
    }
}

 

转载于:https://www.cnblogs.com/astonc/p/9981450.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值