水题,题意是给定目标网格,以及向上下左右一次能移动的格子数,问不限移动次数的情况下,是否可以移动到目标位置。
不难发现向y方向移动的步数仅和 gcd (a, b) 有关,x方向同理,因此直接写if判断目标位置x坐标能否被gcd(a, b)整除即可,y坐标同理。
#include<bits/stdc++.h>
using i64 = long long;
void solve() {
int x, y;
std::cin >> x >> y;
int a, b, c, d;
std::cin >> a >> b >> c >> d;
std::cout << (std::abs(x) % std::gcd(c, d) == 0 && std::abs(y) % std::gcd(a, b) == 0 ? "YES" : "NO") << "\n";
}
int main() {
std::cin.tie(nullptr)->sync_with_stdio(false);
int t = 1;
std::cin >> t;
while (t--) solve();
return 0;
}

京公网安备 11010502036488号