题目链接:https://www.jisuanke.com/course/737/37725
解法:
注意核心!A,C(B是模数,本身就是正整数)要通过这个myabs函数得到一个非零正整数,通过不断加模得到!
long long myabs(long long a)
{
while(a<=0){
a=(a+l);
}
return a;
}
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
long long l;
long long myabs(long long a)
{
while(a<=0){
a=(a+l);
}
return a;
}
long long exgcd(long long a,long long b,long long &x,long long &y){
if(b==0){
x=1;
y=0;
return a;
}
long long r=exgcd(b,a%b,x,y);
long long t=x;
x=y;
y=t-a/b*y;
return r;
}
int main()
{
long long x,y,m,n;
cin >> x>>y>>m>>n>>l;
int A = myabs(m-n);
int C = myabs(y-x);
long long ansx,ansy;
long long D=exgcd(A,l,ansx,ansy);
if((C%D)!=0){
cout<<"Impossible";
return 0;
}
ansx=(ansx+l/D)%(l/D);
ansx=ansx*(C/D)%(l/D);
cout<<ansx;
return 0;
}