求助,EXCRT WA on #1
查看原帖
求助,EXCRT WA on #1
748131
IcyL楼主2023/11/10 16:43

rt

//problem: 
//date: 2023.11.10-14:35
#include <bits/stdc++.h>
#define int __int128
#define FH signed
using namespace std;

int exgcd(int a, int b, int& x, int& y)
{
    if(!b)
    {
        x = 1, y = 0;
        return a;
    }
    int d = exgcd(b, a % b, y, x);
    y -= a / b * x;
    return d;
}

int inv(int a, int b)
{
    int x, y;
    exgcd(a, b, x, y);
    return (x % b + b) % b;
}

int mul(int a, int b, int mod)
{
    int res = 0, f = 1;
    // cout << a << " " << b << "~\n";
    if(b < 0) f = -1, b = -b;
    while(b)
    {
        if(b & 1) res = (res + a) % mod;
        a = (a + a) % mod;
        b >>= 1;
        // if(~b) cout << b << "\n";
    }
    return res * f;
}

int read()
{
    int f=1,x=0;
    char ss=getchar();
    while(ss<'0'||ss>'9'){if(ss=='-')f=-1;ss=getchar();}
    while(ss>='0'&&ss<='9'){x=x*10+ss-'0';ss=getchar();}
    return f*x;
}

FH main()
{
    int n;
    n = read();

    int c1, c2, m1, m2, c, m;
    m1 = read(), c1 = read();
    for(int i = 2; i <= n; i ++)
    {
        m2 = read(), c2 = read();
        int d = __gcd(m1, m2);
        if((c2 - c1) % d != 0)
        {
            cout << -1;
            return 0;
        }
        m = (m1 * m2) / d;
        c = (inv(m1 / d, m2 / d) * (c2 - c1) / d) % (m2 / d) * m1 + c1;
        c = (c % m + m) % m;
        c1 = c, m1 = m;
    }
    cout << (long long)c << "\n";
    return 0;
}
2023/11/10 16:43
加载中...