搞的很蛋疼~
代码:
#include<cstdio> #include<cstring> #include<iostream> using namespace std; long long x,y,m,n,L; long long exgcd(long long m,long long &x,long long n,long long &y) { int x1,y1,x0,y0; x0=1,y0=0; x1=0,y1=1; long long r=((m%n)+n)%n; long long q=(m-r)/n; x=0;y=1; while(r) { x=x0-q*x1;y=y0-q*y1;x0=x1;y0=y1; x1=x; y1=y; m=n;n=r;r=m%n; q=(m-r)/n; } return n; } int main() { while(scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&L)!=EOF) { long long itx=x,ity=y; long long M=exgcd(n-m,itx,L,ity); if((x-y)%M||m==n) printf("Impossible\n"); else { long long s=L/M; long long ans=itx*((x-y)/M); ans=(ans%s+s)%s; printf("%lld\n",ans); } } return 0; }