给定平面上两个格p1,p2,线段p1p2上除p1,p2外一共有多少个格点?
-109<=x1,x2,y1,y2<=109
虽然题不难,但觉得是对最大公约数的意义的很好的理解
通过gcd可以得出横、纵坐标差最多可以被分为多少段,这便满足了最多格点数
#include<bits/stdc++.h>
using namespace std;
int gcd(int x,int y)
{
if(y==0)
return x;
else
return gcd(y,x%y);
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(0);
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
if(x1==x2&&y1==y2)
cout<<0<<endl;
else
cout<<gcd(abs(x1-x2),abs(y1-y2))-1<<endl;
return 0;
}