青蛙的约会
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
typedef long long ll;
ll x,y,n,m,len;
void exgcd(ll a,ll b,ll &d,ll &x,ll &y)
{
if (b==0) {d=a;x=1;y=0;return ;}
exgcd(b,a%b,d,y,x);y-=x*(a/b);
}
ll work(ll a,ll b,ll c)
{
ll x,y,d;
exgcd(a,b,d,x,y);
if (c%d) return -1;
x=x*(c/d);
ll k=b/d;
return ((x%k)+k)%k;
}
int main()
{
scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&len);
if (m<n)swap(n,m),swap(x,y);//更新,需要保证m-n是大于0的,负数,取模时会出问题。。。
ll ans=work(m-n,len,y-x);//不知道为什么把n和m反过来,把x和y反过来,输出的结果就不对。。
if (ans==-1) printf("Impossible");
else printf("%lld",ans);
return 0;
}