感觉没有什么错的,但是只有18pts,球球了/kel
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 5;
int n, r1, r2, m1, m2;
//Hallo Ha Ha Ha Ha Hallo
int exgcd(int a, int b, int &x, int &y) {
if(!b) return x = 1, y = 0, a;
int d = exgcd(b, a % b, x, y);
int t = x; x = y; y = t - a / b * y;
return d;
}
int gcd(int a, int b) {
if(!b) return a;
return gcd(b, a % b);
}
void merge() {
//I I I hate you
int d = gcd(m1, m2); int p1 = m1 / d, p2 = m2 / d, l = m1 * m2 / d;
int c = (r2 - r1) / d, x, y;
//cout << p1 << ' ' << p2 << ' ' << d << ' ' << l << ' ' << c << "\n";
exgcd(p1, p2, x, y);
//cout << x << ' ' << y << "\n";
int xx = (r1 + c * ((x + l) % l) % l * m1 % l + l) % l;
m1 = l, r1 = xx;
//cout << xx << "\n";
return ;
}
signed main() {
scanf("%lld", &n);
for (int i = 1; i <= n; ++i) {
int e, f; scanf("%lld%lld", &e, &f);
if(i == 1) m1 = e, r1 = f;
else {
m2 = e, r2 = f;
merge();
}
}
printf("%lld\n", r1);
return 0;
}