P1170 兔八哥与猎人

普及-都不会做,我退役吧。。。


这道题给你直角坐标系上的两个点,问你他们是否能够互相看见而不被其他的点挡到。

luogu题解

这道题很坑,我真的以为就是判断左右八个点,结果爆零。

其实斜斜的看也能观察到。题解里面说了。

两个点之间要不被看到,是不是前面一定要有点挡着你?

那么你只要不是路径上的第一个点就可以了。

第一个点满足什么条件?

横纵坐标之差互质!很好理解。

所以跑一下gcd就可以了。

代码:

#include<cstdio>

int x1, x2, y1, y2;
int gcd(int x, int y)
{
	if(y == 0) return x;
	return gcd(y, x % y);
}
int abs(int x)
{
	if(x < 0) return -x;
	return x;
}
int main()
{
	int T; scanf("%d", &T);
	while(T--)
	{
		scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
		if(gcd(abs(x1 - x2), abs(y1 - y2)) == 1) printf("no\n");
		else printf("yes\n");
	}
	return 0;
}
posted @ 2018-08-15 13:05  Garen-Wang  阅读(212)  评论(0编辑  收藏  举报