对于某个轴而言,从0点经若干次增a减b达到目的地,可以用以下式子表示
xa+yb=target (1)
所以能否达到target的问题就变成是否存在整数x,y满足上式。
根据bezout定理可知下式一定成立
xa+yb=gcd(a,b) (2)
所以如果(1)式成立,可知gcd(a,b)整除target
那是否能找到x>0而y<0呢?(相当于增a减b)
也是可以的。
如果x1*a+y1*b=target而不满足增a减b
令x2 = x1+b, y2 = y1-a
仍然有x2*a+y2*b=target
而x2>x1,y2<y1
所以总能找到一组(x,y)满足x>0而y<0
#include <bits/stdc++.h>
using namespace std;
bool check(int dist,int a,int b) {
int gd = gcd(a,b);
if(dist % gd)return false;
return true;
}
int main() {
int x, y, a, b, c, d, n;
scanf("%d",&n);
for (int i = 0; i < n; i++) {
scanf("%d%d%d%d%d%d", &x, &y, &a, &b, &c, &d);
if (check(x, d, c) && check(y, a, b)) {
printf("YES\n");
} else {
printf("NO\n");
}
}
}
// 64 位输出请用 printf("%lld")



京公网安备 11010502036488号