rt,代码直接按照excrt写的(虽然说那题也没过)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int n;
ll a[100005],b[100005];
ll Exgcd(ll a, ll b, ll &x, ll &y) {
if (!b) {
x = 1;
y = 0;
return a;
}
ll d = Exgcd(b, a % b, x, y);
ll t = x;
x = y;
y = t - (a / b) * y;
return d;
}
ll lcm(ll a,ll b){
return a/__gcd(a,b)*b;
}
signed main(){
cin >> n;
for(int i=1;i<=n;i++){
cin >> a[i] >> b[i];
}
for(int i=2;i<=n;i++){
if(b[i]<b[i-1]){
swap(a[i],a[i-1]);
swap(b[i],b[i-1]);
}
ll p=b[i]-b[i-1],x=0,y=0;
ll gcd=__gcd(a[i],a[i-1]);
Exgcd(a[i-1],a[i],x,y);
ll nmod=lcm(a[i],a[i-1]);
ll o=(b[i-1]+(b[i]-b[i-1])/gcd%nmod*x%nmod*(a[i-1])%nmod)%nmod;
a[i]=nmod;
b[i]=(o%nmod+nmod)%nmod;
}
cout<<b[n]%a[n]<<endl;
return 0;
}