狩りをする


狩りをする
この问题はどうして贴って、考えが细すぎるためです!!!森の中にM×N本の木、1つのM行のN列の行列を構成して、水平あるいは垂直に隣接する2本の木の距離は1で、ハンターと熊はそれぞれ1本の木の下にあります.ハンターと熊の間に他の木が視線を遮らなければ、ハンターは銃を撃って熊を撃つことができる.猟師と熊の位置を知って、熊の位置が安全かどうかを判断してみましょう.第1の挙動nは、n(n≦100000)群のデータを表し、各群のデータは1行であり、それぞれ4つの正の整数であり、ハンターと熊のx座標とy座標(1≦座標値≦100,000)を表す.出力n行、各動作「yes」または「no」は、熊の位置が安全かどうかを示す.自分でする時:構想:傾きが存在しないこととゼロであることを判断する時、それから直線方程式はk bを求めて、それからyが整数であるかどうかを見て、bugがあって、傾きとbに存在する可能性自体が無限の小数であることを見てそれから:私は馬鹿なXです......優秀な構想:まずコードに来ます
//                 

//    :               (             ),
//              ,gcd(a,b)==2 (    gcd(a,b)> 2,
//    :       ,   a  ab      c       
// (ab   ,c ab   ),
//                b ,    b ,    ,cb ac ,ac      ,
//                 ,cb ac ,b         ,     d
// (d cb  ,   ac==cd,d      ,b  ,   ab           
//    
//   :ab      ,gcd(a,b)>=2(    )

//                   
//      gcd(1,0)==1   no
//        gcd(2,0)==2   yes      
#include
using namespace std;
typedef long long LL;
const LL mod=1e9+7;
const LL INF=0x3f3f3f3f;
const LL NN=1e7+9;
const LL N=2e5+5;

LL gcd(LL x,LL y)
{
     
    if(!y) return x;
    return gcd(y,x%y);
}
int main()
{
     
    LL t;
    cin>>t;
    while(t--)
    {
     
        LL x,y,xx,yy;
        cin>>x>>y>>xx>>yy;
        if(gcd(abs(x-xx),abs(yy-y))==1) cout<<"no";
        else cout<<"yes";
        if(t) putchar(10);
    }
    return 0;
}