https://www.luogu.org/problem/P1170
#include<bits/stdc++.h> using namespace std; int a[100005],b[100005],c[100005],d[100005],n; int main() { cin>>n; for(int i=1; i<=n; i++) { int a,b,c,d; cin>>a>>b>>c>>d; if(a==c||b==d) //特判,排除兔和人在同行或同列的情况,防止__gcd函数出错 if(abs(a-c)+abs(b-d)<=1) cout<<"no"<<endl; //在同行或同列的情况下,若距离小于等于1则不安全 else cout<<"yes"<<endl;//否则兔子和猎人间至少有一棵树,兔子是安全的 else if(__gcd(abs(a-c),abs(b-d))==1) cout<<"no"<<endl;//判断两点之间的纵坐标之差与横坐标之差是否互质,互质则两点间没有树 else cout<<"yes"<<endl;//反之人兔间至少有一棵树 } return 0; } //在这里把人的坐标设为了原点,然后判断兔子坐标是否互质,如果互质,则与兔子与人之间没有别的点,也就是会被看到