狩りをする
狩りをする
この问题はどうして贴って、考えが细すぎるためです!!!森の中に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です......優秀な構想:まずコードに来ます
この问题はどうして贴って、考えが细すぎるためです!!!森の中に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;
}