RT,求大佬康康
#include<bits/stdc++.h>
#define int long long
using namespace std;
/*inline int mul(int x,int y,int mod){
int ans=0;
while(y!=0){
if(y&1)ans+=x,ans%=mod;
x+=x;
x%=mod;
y>>=1;
}
if(ans < 0) ans += mod; else
if(ans > mod) ans -= mod;
return ans;
}*///龟速乘
inline int mul(int a, int b, int mod){
return (a*b-(long long)((long double)a*b/mod)*mod+mod)%mod;
}
inline int exgcd(int a,int b,int &x,int &y){
if(b==0){
x=1;y=0;
return a;
}
int d=exgcd(b,a%b,x,y),t=x;
x=y;
y=t-(a/b)*y;
return d;
}
inline int read(){
char c=getchar();
int s=0,f=1;
while(c<'0' or c>'9'){
if(c=='-')f=-1;
c=getchar();
}
while(c>='0' and c<='9'){
s=(s<<1)+(s<<3)+c-'0';
c=getchar();
}
return s*f;
}
signed main(){
int n,a1,a2,b1,b2,x,y,gcd,lcm;
n=read();
for(register int i=1;i<=n;i++){
if(i==1){
a1=read();b1=read();
}else{
a2=read();b2=read();
gcd=exgcd(a1,a2,x,y);
lcm=(a1/gcd)*(a2/gcd)*gcd;
x=x*(b2-b1)/gcd;
b1=mul(x,a1,lcm)+b1;
b1%=lcm;
a1=lcm;
while(b1<0)b1+=a1;
}
}
while(b1<0)b1+=a1;
printf("%lld\n",b1);
return 0;
}