给定平面的两个格点 P1=(x1,y1) 和 P2=(x2,y2) , 线段 P1P2 上, 除 P1 和 P2 外一种有几个格点?
输入
- 输入包含 4 个整数,分别表示 x1,y1,x2,y2
- −109≤x1,y1,x2,y2≤109
输出
- 输出一个整数,表示格点的个数
样例 1
输入
1 11 5 3
输出
3
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b)
{
if(b==0)
return a;
else
gcd(b,a%b);
}
int main()
{
int x1,x2,y1,y2;
while(cin>>x1>>y1>>x2>>y2)
{
int x,y;
x=abs(x1-x2);
y=abs(y1-y2);
if(x==y==0){
cout<<"0"<<endl;
return 0;
}
cout<<x/(x/gcd(x,y))<<endl;
}
}
该程序计算平面上两点间线段上除起点和终点外的格点个数。输入为两个点的坐标,输出为格点总数。示例输入为(11, 1)和(15, 3),输出为3,因为在线段上有三个格点。程序通过计算x和y的绝对差,并用欧几里得除法确定格点数。
681

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



