题目描述:
http://poj.org/problem?id=1061
#include <cstring>
#include <cstdio>
long long x,y,m,n,L,X,Y;
long long gcd(long long a, long long b)
{
if(b==0)return a;
else return gcd(b,a%b);
}
long long ext_gcd(long long a,long long b,long long& x,long long& y)
{
long long t,ret;
if (!b)
{
x=1,y=0;
return a;
}
ret=ext_gcd(b,a%b,x,y);
t=x,x=y,y=t-a/b*y;
return ret;
}
int main()
{
//freopen("in.txt","r",stdin);
while (scanf("%lld%lld%lld%lld%lld",&X,&Y,&m,&n,&L)!=EOF)
{
long long a = n-m;
long long b = L;
long long c = X-Y;
long long d = gcd(a,b); //构造不定方程;
if(c%d!=0) { printf("Impossible\n");continue;}
a=a/d;
b=b/d;
c=c/d;
ext_gcd(a,b,x,y); //求解ax+by=1的解
x = x*c;
y = y*c; //求acx+bcy=c的解
long long ans,t;
t = x/b;
ans = x - b*t;
if(ans<=0) //求解系;
{
ans+=b;
}
printf("%d\n",ans);
}
return 0;
}