奇异的点
题目传送门!(点这里!)
Emmm…贡献我的九个WA
思路:
找两点之间的坐标为整数的点
方法:
两个边边长的最大公因数-1.
解释:
(首先,把这两个坐标化到一个直角三角形里
然后,找相似三角形,再减去大三角形本身。)
举个例子:
这样,三角形的每一个小格为最大公约数a。
我们可以数三角形任一顶点的个数(肯定不是直角顶点啦)
发现:有一个点和给出的两点的其中一个重合了,所以需要减一。
(个人想法,如若以上解释错误,望大佬指正。。。)
#include<stdio.h>
int gcd(p,q)
{
while(p%q){
int t=p;p=q;q=t%p;
}
return q;
}
int main()
{
int x1,y1,x2,y2;
while(scanf("%d %d %d %d",&x1,&y1,&x2,&y2)!=EOF)
{
int a=x2-x1;
if(a<0) a=-a;
int b=y2-y1;
if(b<0) b=-b;
int f=gcd(a,b);
printf("%d\n",f-1);
}
return 0;
}