列表

详情


NC21204. msc和mas

描述

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

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++11(clang++ 3.9) 解法, 执行用时: 5ms, 内存消耗: 504K, 提交时间: 2020-02-27 17:39:08

#include<iostream>
#include<cstdio>
typedef long long ll;
ll L,a,b;
bool dfs(ll x,ll y)
{
	if(x>L) return true;
	y+=(y+x-1)/x*x;
	return !dfs(y,x);
 } 
 int main()
 {
 	scanf("%lld%lld%lld",&a,&b,&L);
 	printf("%s %s\n",dfs(a,b)?"Yes":"No",dfs(b,a)?"No":"Yes");
 	return 0;
 }

上一题