搞的很蛋疼~
代码:
#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;
}