鹦鹉(解决方案)

题目描述:

有一只居住在(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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值