@[Drind](/user/305854) 如果 $y-x<0,m-n>0$ 你的代码就废了,$m,n$ 和 $x,y$ 不对应了
by __er @ 2023-07-03 09:53:54
@[Drind](/user/305854)
```cpp
#include<bits/stdc++.h>
using namespace std;
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 k=exgcd(b,a%b,x,y);
long long t=x;
x=y;
y=t-(a/b)*y;
return k;
}
int main()
{
long long x,y,m,n,L,a,b,gcd,tmp,ans;
cin>>x>>y>>m>>n>>L;//列出方程x+km=y+kn(mod L),化为同余方程k(m-n)=y-x(mod L),其中k为碰面需要的次数
if(n-m<0)swap(x,y),swap(m,n);
tmp=x-y;//%L+L%L保证y-x为正
gcd=exgcd(n-m,L,a,b);
if(tmp%gcd!=0){//判断同余方程是否有解
cout<<"Impossible\n";
return 0;
}
ans=((a * (tmp / gcd)) % (L / gcd) + (L / gcd)) % (L / gcd);
cout<<ans<<endl;
}
```
by __er @ 2023-07-03 10:01:13
@[__er](/user/713955) 为什么要把L改成(L/gcd)
by Drind @ 2023-07-03 10:15:46
@[Drind](/user/305854) 你可能式子推错了
by __er @ 2023-07-03 10:51:25
看看题解区 FlashHu 的推导?
by __er @ 2023-07-03 10:52:13