
题目描述:
有一只居住在(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;
}
该博客介绍了一个关于计算鹦鹉沿直线飞行路径途经其他鹦鹉家数量的问题。输入为起点和终点坐标,通过计算直线路径与鹦鹉家坐标的相对位置,得出途经鹦鹉的数量。代码中使用了__gcd()函数来找到路径方向的最小公倍数,从而确定路径是否经过其他鹦鹉家。
290

被折叠的 条评论
为什么被折叠?



