D. X-Magic Pai

D. X-Magic Pair

思路:

如果可行,那么答案的构成一定是某个大的数减去某个小的数,或者\(a\)和\(b\)某一个数一开始就等于\(x\),我们把后一种情况特判掉。

如何处理前面一种情况:我们一直保证\(a > b\),在处理过程中\(x <= max(a, b)\)恒成立。如果\(a\) 减去若干个\(b\)就能等于\(x\), 那么\(a\) % $ x$ \(=\) \(a\) % \(b\), 不断把模数更新最大的那个值,模拟一遍,至\(a\)或者\(b\)有一个变成\(0\)则无解,否则有解。

#include <bits/stdc++.h>
#define PII pair<int,int>
#define LL long long
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define sz(x) (int)x.size()

using namespace std;

LL a, b, x;

void solve()
{
	scanf("%lld %lld %lld", &a, &b, &x);
	while(a && b){//a > b
		if(a < b) swap(a, b);
		if(a < x){
			puts("No");
			return;
		}
		if(x % b == a % b){
			puts("Yes");
			return;
		}
		a = a % b;
	}
	puts("No");
}

int main()
{
	int test = 1;
	scanf("%d",&test);
	while(test -- )
	{
		solve();
	}
	return 0;
}


上一篇:什么是jdk jre jvm


下一篇:C. Great Sequence(Div. 2)