【题解】洛谷 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;
}
posted @ 2025-07-07 19:15  Prülystic  阅读(8)  评论(0)    收藏  举报