题意:中文描述的.
分析:设青蛙跳了t次,那么就有(x+mt)-(y+nt)=p*L.
即x-y+(m-n)t=p*L,即(m-n)*t≡(y-x) (mod L).
这个线性同余方程有解当且仅当gcd(m-n,L)|(y-x).
令a=m-n,b=L,c=y-x.用扩展欧几里得解方程ax+by=c.
可以求出原方程的一个解.如何求最小正整数解呢?
假设我们已经得到一个x0,令d=gcd(m-n,L),
那么所有解可以表示为x=x0+k*L/d.
设L'=L/d.
Xmin=(x0 mod L'+L') mod L'.
code:
var x,y,n,m,l,a,b,c,d,xx,yy:int64; function exgcd(a,b:int64; var x,y:int64):int64; var t:int64; begin if b=0 then begin exgcd:=a; x:=1; y:=0; end else begin exgcd:=exgcd(b,a mod b,x,y); t:=x; x:=y; y:=t-a div b*y; end; end; begin readln(x,y,m,n,l); a:=m-n; b:=l; c:=y-x; if a<0 then begin a:=-a; c:=-c; end; d:=exgcd(a,b,xx,yy); if c mod d<>0 then writeln('Impossible') else begin xx:=xx*c div d; yy:=yy*c div d; l:=l div d; xx:=(xx mod l+l) mod l; writeln(xx); end; end.