对于某个轴而言,从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")