这份代码说是中国剩余定理,但本蒟蒻看不懂怎么办
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long LL;
LL n,a[500000],b[500000],M=1;
inline void Exgcd(LL a,LL b,LL &d,LL &x,LL &y){
if(!b){d=a;x=1;y=0;}
else{
Exgcd(b,a%b,d,x,y);
LL t=x;x=y;y=t-(a/b)*y;
}
}
inline LL getanswer(){
LL Ans=0,Mi,x,y,d;
for(LL i=1;i<=n;++i){
Mi=M/a[i];
Exgcd(Mi,a[i],d,x,y);
Ans=((Ans+Mi*x*b[i])%M+M)%M;
}return (Ans+M)%M;
}
int main(){
scanf("%lld",&n);
for(LL i=1;i<=n;++i){
scanf("%lld%lld",&a[i],&b[i]);
M*=a[i];
}
printf("%lld\n",getanswer());
return 0;
}