1 条题解

  • 0
    @ 2025-10-8 16:58:25
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    void exgcd(LL a, LL b, LL &d, LL &x, LL &y) {
        if(b == 0) {d = a; x = 1; y = 0;}
        else {
            exgcd(b, a % b, d, y, x);
            y -= (a / b) * x;
        }
    }int main() {
        int T; scanf("%d", &T);
        while(T--) {
            LL n, dd, x, y; scanf("%lld%lld%lld%lld", &n, &dd, &x, &y);
            LL A, B, d, X, Y, K;
            A = dd, B = n, K = y - x;
            exgcd(A, B, d, X, Y);
            if(K % d != 0) printf("Impossible\n");
            else {
                LL dx = abs(B / d), dy = abs(A / d);
                X = X * (K / d);
                X = (X % dx + dx) % dx;
                printf("%lld\n", X);
            }
        }
        return 0;
    }
    
    • 1

    *【扩展欧几里得:解同余方程】五指山

    信息

    ID
    1772
    时间
    1000ms
    内存
    64MiB
    难度
    6
    标签
    递交数
    88
    已通过
    29
    上传者