D. X-Magic Pair(辗转相除)
创始人
2024-03-03 18:42:57
0

Problem - 1612D - Codeforces

 

给你一对整数(a,b)和一个整数x。

你可以用两种不同的方式改变这对整数。

设置(分配)a:=|a-b|。
设置(分配)b:=|a-b|。
其中|a-b|是a和b之间的绝对差值。
如果只用给定的操作就能得到a或b,那么这对(a,b)就被称为x-magic(即,如果经过一定数量的操作后a=x或b=x,这对(a,b)就是x-magic)。你可以应用任何次数的操作(甚至是零)。

你的任务是找出这对(a,b)是否是x-magic。

你必须回答t个独立的测试案例。

输入
输入的第一行包含一个整数t(1≤t≤104)--测试案例的数量。接下来的t行描述测试用例。

测试用例的唯一一行包含三个整数a,b和x(1≤a,b,x≤1018)。

输出
对于第i个测试案例,如果相应的一对(a,b)是x-magic,则打印YES,否则打印NO。

例子
输入复制
8
6 9 3
15 38 7
18 8 8
30 30 30
40 50 90
24 28 20
365 216 52
537037812705867558 338887693834423551 3199921013340
输出拷贝

是的


没有


题解:
有一个结论,如果一个永远是一个大的数减一个小的数,得到的数都会出现

但是一直相减时间复杂度太大,所以我们选择相除,

如果此时a%b == x%b 并且a >= x说明,x一定可以出现

否则a = a%b,直到a或b等于0

 

#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define int long long
int a,b,x;
void solve()
{cin >> a >> b >>x;while(a&&b){if(a < b)swap(a,b);if(a%b == x%b &&a >= x){cout<<"YES\n";return;}a = a%b;} cout<<"NO\n";
}
signed main()
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);
//	cout.tie(0);int t = 1;cin >> t;while(t--){solve();}
}//1 10 11//001
//010
//011
//100

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...