C 小红走网格

思路

考虑裴蜀定理,所有可达数均为 gcd 的倍数。故判断 (x, y) 是否为对应的 gcd(a, b) 和 gcd(c, d) 的倍数即可

代码

void solve(){
    int x, y, a, b, c, d;
    cin >> x >> y >> a >> b >> c >> d;
    int g1 = __gcd(a, b), g2 = __gcd(c, d);
    if(x % g2 == 0 && y % g1 == 0) cout << "YES\n";
    else cout << "NO\n";
    return ;
}