七步之内,熊快

zhangwch  •  1个月前


#include <iostream>
#include <cmath>
using namespace std;

// 被树遮挡,意味着两点的连线经过整点
// 同时意味着,以人和熊组成的矩形,可以【按某个比例缩小后,四个点依然为整点】
// 同时意味着,长和宽有公约数,这样才能缩小
// 所以其实就是gcd

int gcd(int x, int y) {
    if (y == 0) return x;
    return gcd(y, x % y);
}

int main() {
    int n;
    cin >> n;
    while (n--) {
        int x1, x2, y1, y2;
        cin >> x1 >> y1 >> x2 >> y2;
        int d1 = abs(x1 - x2), d2 = abs(y1 - y2);
        
        // 还要考虑人和熊在一条水平线或垂直线上的情况
        // 还要考虑人和熊在一棵树下的情况(七步之内,熊快)
        if (d1 == 0 || d2 == 0) {
            if (d1 + d2 == 0) cout << "yes" << endl;
            else if (d1 + d2 <= 1) cout << "no" << endl;
            else cout << "yes" << endl;
            
            continue;
        }
        
        if (gcd(d1, d2) == 1) cout << "no" << endl;
        else cout << "yes" << endl;
    }
    return 0;
}

Comments:

有没有一种可能,有一种自带函数叫__gcd


刘嘉柚  •  1个月前

yes


baim.  •  1个月前