求救最后一个测试点WA
查看原帖
求救最后一个测试点WA
920211
wuxikai楼主2025/1/5 09:43
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e6 + 7;
const double eps = 1e-8;
int m[N], r[N], c[N], cinv[N];

int ex_gcd(int a, int b, int &x, int &y) // x,y是ax+by=gcd(a,b)的一组解
{
    if (b == 0)
    {
        x = 1;
        y = 0;
        return a;
    }
    int d = ex_gcd(b, a % b, x, y);
    int temp = y;
    y = x - (a / b) * y;
    x = temp;
    return d;
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    bool flag = false;
    int n, M = 1;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> m[i] >> r[i];
        M *= m[i];
    }
    for (int i = 1; i <= n; i++)
    {
        c[i] = M / m[i];
        int x, y;
        int g = ex_gcd(c[i], m[i], x, y);
        if (g != 1)
        {
            flag = true;
            break;
        }
        cinv[i] = (x % m[i] + m[i]) % m[i];
    }
    /*
    if (flag)
    {
        cout << -1;
        return 0;
    }
    */
    int sum = 0;
    for (int i = 1; i <= n; i++)
    {
        sum = sum + (r[i] * c[i] * cinv[i]);
    }
    sum = sum % M;
    while (sum < 0)
    {
        sum = (sum + M) % M;
    }

    cout << sum % M;

    return 0;
}
2025/1/5 09:43
加载中...