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

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...