P1495-曹冲养猪

在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

void extend_gcd(ll a,ll b,ll &x,ll &y) {
    if(b == 0) {
        x = 1; y = 0; return;
    }
    extend_gcd(b, a % b, y, x);
    y -= (a / b) * x;
}

ll CRT(int a[],int m[],int n) {
    ll M = 1, ans = 0;
    for (int i = 0; i < n; ++i) M *= m[i];
    for (int i = 0; i < n; ++i) {
        ll Mi = M / m[i], x, y;
        extend_gcd(Mi, m[i], x, y);
        ans = (ans + Mi * x * a[i]) % M;
    }
    return (ans + M) % M;
}

int a[15], m[15];

int main() {
    int n; cin >> n;
    for (int i = 0; i < n; ++i) {
        cin >> m[i] >> a[i];
    }
    ll ans = CRT(a, m, n);
    cout << ans << endl;
    return 0;
}

发布了26 篇原创文章 · 获赞 3 · 访问量 2408

猜你喜欢

转载自blog.csdn.net/BX2359575459/article/details/103509816