记录编号 603190 评测结果 AAAAAAAAAA
题目名称 3479.[POJ 2891]表达整数的奇怪方式 最终得分 100
用户昵称 Gravatar对立猫猫对立 是否通过 通过
代码语言 C++ 运行时间 0.027 s
提交时间 2025-07-09 20:30:33 内存使用 3.66 MiB
显示代码纯文本
#include <iostream>
#define ll long long
using namespace std;
long long x1, a1, m1, a2, m2, a3, m3, n;
long long myabs(ll a);
ll exgcd(ll a, ll b, ll &x1, ll &y1){
    if(b == 0){
        x1 = 1, y1 = 0;
        return a;
    }
    ll ans = exgcd(b, a % b, x1, y1);
    ll t = x1;
    x1 = y1;
    y1 = t - a / b * y1;
    return ans;
}
int main() {
    cin >> n;
    cin >> m1 >> a1;
    for(int i = 2; i <= n; i++){
        cin >> m2 >> a2;
        long long k1, k2;
        long long d = exgcd(m1, m2, k1, k2);
        if(myabs(a2 - a1) % d) {
            cout << "-1" << endl;
            return 0;
        }
        k1 *= (a2 - a1) / d;
        long long M = m2 / d;
        k1 = (k1 % M + M) % M;
        long long t = m1 * m2 / d;
        a1 = (k1 * m1 + a1) % t, m1 = t;
    }
    cout << (a1 % m1 + m1) % m1 << endl;
    return 0;
}
long long myabs(ll a) {
    if(a < 0) return -a;
    else return a;
}