最纯粹的扩欧:
#include<bits/stdc++.h>
#define int long long
#define y1 _y
using namespace std;
int a,b,c,x1,x2,y1,y2,x,y,z,ans;
int _gcd(int a,int b,int x,int y){
if(!b){
x=1;
y=0;
return a;
}
int p=_gcd(b,a%b,x,y),t=x;
x=y;
y=t-a/b*y;
return p;
}
signed main(){
scanf("%lld%lld%lld%lld%lld%lld%lld",&a,&b,&c,&x1,&x2,&y1,&y2);
c=-c;
int g=__gcd(a,b);
a=a/g*c;
b=b/g*c;
z=_gcd(a,b,x,y);
ans=min(max(x-x1,x2-x)/(b/z),max(y-y1,y2-y)/(a/z));
printf("%lld",ans);
return 0;
}