rt,照着视频打的。。但是过不了样例
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 10;
int n;
int exgcd(int a,int b, int &x, int &y) {
if(!b) {x = 1, y = 0; return a;}
int X, Y;
int d= exgcd(b, a % b, X, Y);
X = Y;
y = X - a / b * Y;
return d;
}
int exCRT(int m[], int r[]){
int m1, m2, r1, r2, p, q;
m1 = m[1];
r1 = r[1];
for(int i = 2; i <= n ; i ++) {
m2 = m[i];
r2 = r[i];
int d = exgcd(m1, m2, p, q);
if((r2 - r1) % d) return -1;
p = p * (r2 - r1) / d;
p = (p % (m2 / d) + m2 / d) % (m2 / d);
r1 = m1 * p + r1;
m1 = m1 * m2 / d;
}
return (r1 % m1 + m1) % m1;
}
signed main(){
cin >> n;
int m[N];
int r[N];
for(int i = 1; i <= n; i ++) {
cin >> m[i] >> r[i];
}
cout <<exCRT(m, r);
}