HDU 1577 判断两点之间是否存在整数点

来源:互联网 发布:python获取字符串长度 编辑:程序博客网 时间:2024/06/05 06:19

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1577

题意:给出两个人的坐标,问一个是否能看到另一个人;

思路:若能看到另一个人的话,这两个点之间没有整数点。即三角形两直角边边长的最大公约数为1;

#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<cmath>#include<queue>using namespace std;int gcd(int x,int y){while(x%y!=0){int t=x;x=y;y=t%y;}return y;}int main(){freopen("input.txt","r",stdin);int L,sx,sy,px,py,a,b;while(cin>>L){//printf("debug\n");if(L==0) return 0;cin>>sx>>sy>>px>>py;//printf("%d %d %d %d %d\n",L,sx,sy,px,py);//printf("a=%d  b=%d\n",abs(px-sx),abs(py-sy));if(abs(px)>L || abs(py)>L){printf("Out Of Range\n");continue;}a=abs(sx-px);b=abs(sy-py);if(a<b){int t=a;a=b;b=t;}if(a==b){if(a==1){printf("Yes\n");}else{printf("No\n");}}else if(b==0){if(a==1) printf("Yes\n");else printf("No\n");}else{//    printf("gcd=%d\n",gcd(a,b));    if(gcd(a,b)==1)    printf("Yes\n");    else        printf("No\n");}}return 0;}


0 0