逃避系统警察
【題目背景】
由于GJY在與神犇的世紀(jì)大戰(zhàn)中輸了,現(xiàn)在她必須躲避系統(tǒng)警察對她的追捕,不然她一輩子都不可以與神犇交朋友了。
【題目描述】
GJY躲藏到了一個(gè)茂密的森林里,森林里是一個(gè)m*n的矩陣,里面有m*n棵樹,也就是說在每一整數(shù)位置上都有一棵樹,水平或垂直相鄰的兩棵樹的距離為1。而GJY就在某一個(gè)果樹下面。
系統(tǒng)警察可是會爬樹的,他帶著他的電子網(wǎng)爬上了某一棵樹,準(zhǔn)備來抓捕GJY。如果警察和GJY之間沒有其他的樹,那么警察就會看到GJY,就會對她實(shí)施抓捕。現(xiàn)在聰明的我們已經(jīng)知道了警察和GJY的位置,要求你編寫一個(gè)程序來判斷警察是否可以抓到GJY。
【輸入格式】
第一行為n,表示一共有n組數(shù)據(jù),每組數(shù)據(jù)的第一行為兩個(gè)正整數(shù)ax和ay,表示系統(tǒng)警察的位置,每組數(shù)據(jù)的第二行為兩個(gè)正整數(shù)bx和by,表示GJY所在的位置。
【輸出格式】
一共有n行,如果可以抓到GJY輸出“yes”,否則輸出“no”。
【輸入樣例】
1
1 1
1 2
【輸出樣例】
no
【數(shù)據(jù)范圍】
對于100%的數(shù)據(jù),n≤100000,1≤ax,ay,bx,by≤100000000.
分析
這題就是求在一個(gè)點(diǎn)陣內(nèi),兩點(diǎn)連成一條直線,直線上是否有其他點(diǎn),若有則輸出no,否則輸出yes
這題有一個(gè)公式:在一個(gè)點(diǎn)陣內(nèi),若abs(ax-bx)和abs(ay-by)有一個(gè)公約數(shù),則兩點(diǎn)相連,直線上就會有其他點(diǎn)。
程序:
var
n,i:longint;
ax,bx,ay,by,x,y:int64;
function f(x,y:longint):longint;
begin
? ? if y<>0 then exit(f(y,x mod y)) else exit(x);
end;
begin
? ? readln(n);
? ? for i:=1 to n do
? ? begin
? ? ? ? readln(ax,ay);
? ? ? ? readln(bx,by);
? ? ? ? x:=abs(ax-bx);
? ? ? ? y:=abs(ay-by);
? ? ? ? if f(x,y)=1 then writeln('yes') else writeln('no');
? ? end;
end.
轉(zhuǎn)載于:https://www.cnblogs.com/YYC-0304/p/9500107.html
總結(jié)
- 上一篇: 侦察兵
- 下一篇: JZOJ__Day 3:【NOIP普及模