Wannafly挑战赛28 A msc和mas

本文描述了一款由msc和mas参与的数字游戏,通过设定初始值和阈值,两人轮流操作,目标是使自己的数字超过阈值以获胜。文章提供了详细的算法实现,包括输入输出描述和示例。

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

 

题目描述

msc有一天遇见了mas,于是他们开始玩游戏。
msc和mas初始各有一个正整数A和B,并且他们共同设置了一个阈值L。
然后游戏就开始了,对于每一局操作的人,假设他手上拿着的是数字x,对手手上拿着的是数字y(记这一局开始时y的数值为y0),那么:
1、如果x>L,那么他就胜利了,否则进入步骤2
2、他会给对手的数值加上x(即),如果此时对手手上的数值y大于等于2y0,那么这一轮结束轮到对手操作,否则继续执行步骤2
由于mas爱慕着msc,所以mas想知道当msc先手或后手时能否胜利。

输入描述:

一行三个正整数A,B和L,分别表示msc初始的数字,mas初始的数字和阈值。

输出描述:

一行两个字符串'Yes'或'No',分别表示msc先手以及后手时能否胜利,如果可以则输出'Yes',否则输出'No'(不包含单引号)。

 

示例1

输入

复制

232 42 9483

输出

复制

No No

备注:

1≤ A,B,L≤ 109

传送门

模拟

#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
int main()
{
    ll a,b,l;
    while(cin>>a>>b>>l)
    {
        ll m=a,n=b;
        while(1)
        {
            if(m>l)
            {
                cout<<"Yes ";
                break;
            }
            ll x=n;
            while(n<2*x)
            n+=m;
            if(n>l)
            {
            cout<<"No ";
            break;
            }
            ll y=m;
            while(m<2*y)
            m+=n;
        }
        m=b,n=a;
        while(1)
        {
            if(m>l)
            {
                cout<<"No"<<endl;
                break;
            }
            ll x=n;
            while(n<2*x)
            n+=m;
            if(n>l)
            {
            cout<<"Yes"<<endl;
            break;
            }
            ll y=m;
            while(m<2*y)
            m+=n;
        }
         
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值