> 文档中心 > 洛谷 P1170 兔八哥与猎人

洛谷 P1170 兔八哥与猎人


题目描述

兔八哥躲藏在树林旁边的果园里。果园有 M \times NM×N 棵树,组成一个 MM 行 NN 列的矩阵,水平或垂直相邻的两棵树的距离为 11。兔八哥在一棵果树下。

猎人背着猎枪走进了果园,他爬上一棵果树,准备杀死兔八哥。

如果猎人与兔八哥之间没有其它的果树,猎人就可以看到兔八哥。

现己知猎人和兔八哥的位置,编写程序判断兔子所在的位置是否安全.

输入格式

第一行为 nn,表示有 nn 组数据,每组数据的第一行为两个正整数 a_xax​ 和 a_yay​,表示猎人的位置,第二行为两个正整数 b_xbx​ 和 b_yby​,表示兔八哥的位置。

输出格式

共有 n 行,每行为 yesno 表示兔八哥的位置是否安全。

思路分析:
不是只有猎人周围的八棵树可以干掉兔八哥, 注意题干的没有其他果树如何理解,所以兔八哥要想躲避猎人的攻击,它与猎人横纵坐标之差的绝对值必须同时是一个大于1的整数的倍数,所以它们的最大公约数非1,意思是它们不互质(输出yes)。

#includeusing namespace std;int n;int ax, ay, bx, by;//比输入x1快int gcd(int x,int y) {if (y == 0)return x;else{return gcd(y, x % y);}}int main() {cin >> n;for (int i = 0; i < n; i++) {scanf("%d%d%d%d", &ax, &ay, &bx, &by);if (gcd(abs(ax - bx), abs(ay - by)) == 1)cout << "no" << endl;else cout << "yes" << endl;}return 0;}

 

汽车技师网