hdu 1577 WisKey的眼神

这题的意思就是要求两点之间是否有整数点,刚开始想用斜率做的,但没想出来怎么做,暴力了一下,没过~~上网看了一下别人的思路,果然。。。。自己还是弱啊~

这题的思路是相似三角形,

若AC之间有整数点F,则必有AB/BC=AE/EF,即AB与BC必有不小于一的公约数,所以直接转化成求AB、BC是否有不为一的最大公约数的问题了~

代码:

 

 1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<string.h>
4 #include<math.h>
5 int gcd(int a,int b)
6 {
7 if(!b)
8 return a;
9 return gcd(b,a%b);
10 }
11 int main()
12 {
13 int l,sx,sy,ex,ey,m,n;
14 while(scanf("%d",&l),l)
15 {
16 scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
17 if(abs(sx)>l||abs(sy)>l||abs(ex)>l||abs(ey)>l)
18 {
19 printf("Out Of Range\n");
20 continue;
21 }
22 m=abs(sx-ex);n=abs(sy-ey);
23 int k=gcd(m,n);
24 if(k>1)
25 printf("No\n");
26 else
27 printf("Yes\n");
28 }
29 }

 

转载于:https://www.cnblogs.com/misty1/archive/2011/12/20/2294520.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值