到底哪里溢出了?
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<sstream>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<deque>
#include<cstdlib>
#include<ctime>
#define dd double
#define ll long long
#define ld long double
#define ull unsigned long long
#define N 100100
#define M number
using namespace std;
inline ll exgcd(ll a,ll b,ll &x,ll &y){
if(b==0){
x=1;
y=0;
return a;
}
int gcd=exgcd(b,a%b,x,y);
int tmp=x;
x=y;
y=tmp-a/b*y;
return gcd;
}
ll n;
ll a[N],b[N];
inline ll ksc(ll x,ll y,ll mod){
ll z=(ld)x/mod*y;
ll res=(ull)x*y-(ull)mod*z;
return (res%mod+mod)%mod;
}
int main(){
// freopen("P4777_13.in","r",stdin);
scanf("%lld",&n);
for(int i=1;i<=n;i++) scanf("%lld%lld",&a[i],&b[i]);
ll m=a[1],x0=b[1];
for(int i=2;i<=n;i++){
ll t,q;
ll g=exgcd(m,a[i],t,q);
ll now_m=m/g*a[i];
t=ksc(t,((b[i]-x0)/g+a[i])%a[i],a[i]);
x0=(x0%now_m+ksc(t,m,now_m))%now_m;
m=now_m;
}
printf("%lld",x0%m);
return 0;
}