P1170 兔八哥与猎人(简单数论,GCD)
来源:互联网 发布:远程网络教育四川大学 编辑:程序博客网 时间:2024/05/01 18:15
P1170 兔八哥与猎人
今天来看一道水题。
题目描述
兔八哥躲藏在树林旁边的果园里。果园有M × N棵树,组成一个M行N列的矩阵,水平或垂直相邻的两棵树的距离为1。兔八哥在一棵果树下。
猎人背着猎枪走进了果园,他爬上一棵果树,准备杀死兔八哥。
如果猎人与兔八哥之间没有其它的果树,猎人就可以看到兔八哥。
现己知猎人和兔八哥的位置,编写程序判断兔子所在的位置是否安全.
输入输出格式
输入格式:
第一行为n,表示有n(n ≤ 100,000)组数据,每组数据的第一行为两个正整数ax和ay,表示猎人的位置,第二行为两个正整数bx和by,表示兔八哥的位置(1 ≤ ax, ay, bx, by ≤ 100,000,000)。
输出格式:
共有n行,每行为“yes”或“no”表示兔八哥的位置是否安全。
输入输出样例
输入样例#1:
1
1 1
1 2
输出样例#1:
no
思路
这个题实质上是在求以兔子和猎人连线为斜边所构成的直角三角形中,斜边是否过格点的问题。
了解GCD的同学就知道,只需要确定二者横纵坐标差是否互质即可。
最后还要注意题干中问的是是否安全,而不是是否能看见,所以这一点判断的时候一定注意!
代码
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int i,j,m,n;int x1,x2,y1,y2;int r(){ int aans=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { aans*=10; aans+=ch-'0'; ch=getchar(); } return aans*f;}int gcd(int a,int b){ return a==0?b:gcd(b % a, a);}int main(){ n=r(); for(i=1;i<=n;i++) { x1=r(),y1=r(),x2=r(),y2=r(); if(gcd(abs(x2-x1),abs(y2-y1))==1) printf("no\n"); else printf("yes\n"); } return 0;}
阅读全文
1 0
- P1170 兔八哥与猎人(简单数论,GCD)
- UVa 11388 - GCD LCM (简单数论)
- 简单数论-Gcd
- [HDU2588]GCD(数论)
- HDU 5780 gcd(数论)
- 数论、、gcd
- 数论+gcd
- 猎人与狗
- 猎狗与猎人
- 猎人与猎狗
- 猎人与猎狗
- 猎人与猎狗
- 实现(简单 和中等) 难度通讯录 操作 - 猎人猫
- bzoj 2219: 数论之神 (BSGS+GCD+数论)
- UVA 11426 - GCD - Extreme (II) (数论)
- uva 11388 - GCD LCM(数论)
- UVA 10951 - Polynomial GCD(数论)
- zoj 3846 GCD Reduce(数论)
- JNI源码分析(并实现JNI动态注册)
- FPGA前世今生(一)
- git已经push代码到gitlab如何回退
- Math类四个常用方法辨析,floor、ceil、round、rint
- BZOJ1046 上升序列 [二分][贪心]
- P1170 兔八哥与猎人(简单数论,GCD)
- 基于R语言的Kaggle案例分析学习笔记(一)
- 懒人读算法(十)-区间总结
- MySQL-索引可能失效场景
- 微分-跟踪器(tracking
- Openstack容器化部署研究之:Kolla离线制作Openstack服务的Docker容器镜像
- 两个有序数组合并为一个有序数组
- Android踩坑日记:监听软键盘多次调用和刷新系统相册和获取所有相片
- 七大内部排序算法总结(插入排序、希尔排序、冒泡排序、简单选择排序、快速排序、归并排序、堆排序)