exgcd裸題。
兩個人之間有一個距離,兩人有一個速度差,設這個距離爲c,速度差爲a。而需要的次數就是x
那麼題意就是,這樣就是exgcd的標準形式啦。
至於距離和速度差一定要記得是追及問題,如果距離爲a-b,那麼速度就是b的減a的,如果爲負,就取模加模再取模,變爲正的
含義上就是追了一圈。
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#define mode 999911658
using namespace std;
typedef long long ll;
ll x,y,xx,yy,n,m,l;
ll exgcd(ll a,ll b)
{
if(b==0)
{
x=1,y=0;
return a;
}
ll r=exgcd(b,a%b);
ll t=x;
x=y;
y=t-a/b*x;
return r;
}
int main()
{
scanf("%lld%lld%lld%lld%lld",&xx,&yy,&m,&n,&l);
ll aa=((n-m)%l+l)%l,cc=((xx-yy)%l+l)%l; //追及問題。。
ll gg=exgcd(aa,l);
if(cc%gg)
{
printf("Impossible");
return 0;
}
cc/=gg;l/=gg;
x=(x%l+l)%l;
x=x*cc%l;
printf("%lld",(x%l+l)%l);
return 0;
}