【题解】洛谷 P1516 青蛙的约会
题意即求 \(x + pm \equiv y + qn \pmod {L}\) 的解。考虑用 exgcd 求出特解 \(p_0\),在此基础上求得最小正整数 \(p'\) 即可。
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll x, y, m, n, l, a, b, c, p, q, d;
ll exgcd(ll a, ll b, ll& x, ll& y){
if(b == 0){
x = 1, y = 0;
return a;
}
ll res = exgcd(b, a % b, x, y), t = x;
x = y, y = t - a / b * y;
return res;
}
int main(){
scanf("%lld%lld%lld%lld%lld", &x, &y, &m, &n, &l);
a = n - m, b = l, c = x - y;
if(a < 0)
a = -a, c = -c;
d = exgcd(a, b, p, q);
if(c % d){
printf("Impossible\n");
return 0;
}
p *= (c / d), q *= (c / d);
printf("%lld\n", (p % (b / d) + (b / d)) % (b / d));
return 0;
}

浙公网安备 33010602011771号