兔八哥与猎人
题目描述
兔八哥躲藏在树林旁边的果园里。果园有 M × N M \times N M×N 棵树,组成一个 M M M 行 N N N 列的矩阵,水平或垂直相邻的两棵树的距离为 1 1 1。兔八哥在一棵果树下。
猎人背着猎枪走进了果园,他爬上一棵果树,准备杀死兔八哥。
如果猎人与兔八哥位置的连线上没有其它的果树,猎人就可以看到兔八哥。
现己知猎人和兔八哥的位置,编写程序判断兔子所在的位置是否安全。
输入格式
第一行为 n n n,表示有 n n n 组数据,每组数据的第一行为两个正整数 a x a_x ax 和 a y a_y ay,表示猎人的位置,第二行为两个正整数 b x b_x bx 和 b y b_y by,表示兔八哥的位置。
输出格式
共有
n
n
n 行,每行为 yes
或 no
表示兔八哥的位置是否安全。
样例 #1
样例输入 #1
1
1 1
1 2
样例输出 #1
no
提示
1 ≤ n ≤ 1 0 5 1\le n \le 10^5 1≤n≤105, 1 ≤ a x , a y , b x , b y ≤ 1 0 8 1 \le a_x, a_y, b_x, b_y \le 10^8 1≤ax,ay,bx,by≤108。
我的代码
#include<bits/stdc++.h>
#define inf INT_MAX
using namespace std;
inline int read(){
int num=0,flag=1;
char c=' ';
for(;c>'9'||c<'0';
c=getchar()) if(c=='-') flag = -1;
for(;c>='0'&&c<='9';
num=(num<<1)+(num<<3)+c-48,c=getchar());
return num*flag;
}
int main(){
int T=read();
while(T--){
int ax=read(),ay=read(),bx=read(),by=read();
int dy = abs(ay-by),dx=abs(ax-bx);
printf(__gcd(dy, dx)==1?"no\n" :"yes\n");
}
return 0;
}