题目描述:
有一只居住在(x1,y1)的鹦鹉想去远方的另一只鹦鹉家玩。那只鹦鹉住在(x2,y2)。虽然路途比较远,但是这位旅行者可以在途径的其他鹦鹉家休息调整蹭蹭饭。鹦鹉不想浪费多余的力气,所以他会飞一条笔直的路径。现在他想知道,他出发到达目的地之前会途经多少只鹦鹉的家。你能帮助他么?
如图所示,途中仅经过一只鹦鹉的家,即点(3,4)。
输入四个数均为整数,且值在[-10^9,10^9]内。
用到STL中的__gcd()函数进行两数求最大公约数。
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
long long x3,y3;
int m(long long x3,long long y3);
int main()
{
long long x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
int sum=0;
long x5,y5;
x5=x2-x1;y5=y2-y1;
x3=x2-x1;y3=y2-y1;
m(x3,y3);
x5=(x5/x3)-1;
cout<<x5;
}
int m(long long x4,long long y4)
{
int min;
min=__gcd(x4,y4);
if(min==1){x3=x4;return 0;}
while(x4%min==0&&y4%min==0)
{
x3=x4/min;y3=y4/min;
x4=x4/min;y4=y4/min;
}
return 0;
}