P1170 兔八哥与猎人(简单数论,GCD)

原创 2017年10月13日 10:42:57

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;
}

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

简单数论-Gcd

欧几里德算法是最早的算法,用辗转相除法求最大公因数。 #include using namespace std; //Gcd(m, n) == Gcd(n, m mod n) //Gcd(...
  • Walton_
  • Walton_
  • 2016年03月25日 14:01
  • 184

读猎狗与猎人之间的寓言故事有感

原文:www.zuola.com整理硬盘资料时发现有些文章很有意思,值得与别人分享。这几个寓言很有意思,我便写下了这些读后感。一一条猎狗将兔子赶出了窝,一直追赶他,追了很久仍没有捉到。牧羊犬看到此种情...
  • freexploit
  • freexploit
  • 2006年08月05日 23:49
  • 2661

胆小的猎人与樵夫

有个猎人寻觅狮子的足迹. 他问一个樵夫,问他有没有发现狮子的足迹. 樵夫答道:“只看到狮子本身.”猎人吓得脸无血色,全身颤抖地说:“我仅搜寻它足迹,并不要找狮子本身.”...
  • wangchinaking
  • wangchinaking
  • 2011年09月26日 21:06
  • 339

51nod1455 宝石猎人【dp---状态转移】

1455 宝石猎人 题目来源: CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 ...
  • leibniz_zhang
  • leibniz_zhang
  • 2017年01月22日 14:17
  • 272

怪物猎人大剑使用

本教程是为了想玩怪物猎人,又卡在前期的boss过不去的人而写。很多怪物猎人论坛都有一个不好的风气,就是新人一问某个boss怎么打,下面的回复全是穿xx装备拿xx武器用不了5分钟就杀掉之类的,一大堆别人...
  • lvdense
  • lvdense
  • 2010年01月05日 23:29
  • 3710

iOS 开发之多线程 (GCD与NSOperation)详解

本文转自:http://dev.dafan.info/detail/226124?p=18 概述 何为多线程? 多线程其实针对单核的CPU来设计的,CPPU同一时间只能执行一...
  • Xia0Liang
  • Xia0Liang
  • 2017年04月19日 11:37
  • 926

UVa 11388 - GCD LCM (简单数论)

I I U C   O N L I N E   C O N T E S T   2 0 0 8 Problem D: GCD LCM Input: standa...
  • zhaosdfa
  • zhaosdfa
  • 2014年08月22日 16:28
  • 262

RunLoop总结:RunLoop 与GCD 、Autorelease Pool之间的关系

如果在面试中问到RunLoop相关的知识,很有可能也会问到RunLoop与GCD、Autorelease Pool有没有关系,哪些地方用到了GCD、Autorelease Pool等。 So,本文就...
  • u011619283
  • u011619283
  • 2016年12月21日 14:00
  • 3635

【iOS】多线程NSOperation 与 GCD的区别

NSOperation是苹果封装的一套多线程的东西,不像GCD是纯C语言的,这个是OC的。但相比较之下GCD会更快一些,但本质上NSOPeration是多GDC的封装。 一、NSOperatio...
  • sevenquan
  • sevenquan
  • 2015年12月23日 16:32
  • 2032

gcd与lcm

#include int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }int lcm(int a, int b) { ...
  • lyx_2016
  • lyx_2016
  • 2016年11月14日 14:36
  • 517
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:P1170 兔八哥与猎人(简单数论,GCD)
举报原因:
原因补充:

(最多只允许输入30个字)