假设:跳x1次后相遇,相遇时路乘差是y1*l(跳了y1圈)
列出方程:x+m*x1-(y+n*x1)=y1*l ;
化简为(n-m)*x1+y1*l=x-y ;
代码:
#include<iostream> #include<cstdio> using namespace std; long long exgcd(long long a,long long b,long long& x,long long& y) { if(b==0) { x=1,y=0; return a; } long long g = exgcd(b,a%b,y,x); y -= a/b*x; return g; } int main() { long long x,y,m,n,l,x1,y1; cin>>x>>y>>m>>n>>l; long long c=x-y,a=n-m,b=l; long long d=exgcd(a,b,x1,y1); if(c%d!=0) printf("Impossible\n"); else { x1=x1*c/d; x1=(x1%(b/d)+(b/d))%(b/d); printf("%lld\n",x1); } return 0; }