题目大意自行参考。
题解:化一化式子即可。
要注意的是ax=b(mod p)中(a,p)=d,那么直接用exgcd求出来的x要对p/d取模。
#include<iostream>
#include<cstdio>
#include<cstring>
#define lint long long
using namespace std;
lint exgcd(lint a,lint b,lint &d,lint &x,lint &y)
{
if(!b) d=a,x=1,y=0;
else exgcd(b,a%b,d,y,x),y-=x*(a/b);
}
int main()
{
lint x,y,m,n,p;
scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&p);
m%=p;n%=p;y%=p;x%=p;
if(m==n)
{
printf("Impossible\n");
return 0;
}
lint a=(m-n+p)%p,b=(y-x+p)%p,d;
exgcd(a,p,d,x,y);
if(b%d)
{
printf("Impossible\n");
return 0;
}
p/=d;x=(x+p)%p;x=(lint)x*(b/d)%p;
printf("%lld\n",x);return 0;
}