见数论中相关讲解。
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,x=0;
const int maxn=15;
int a[maxn],b[maxn],m[maxn],t[maxn],M=1;
void exgcd(int a,int b,int &x,int &y){
if(b==0){
x=1,y=0;return ;
}
exgcd(b,a%b,y,x);y-=a/b*x;
}
int ny(int a,int mod){
int x,y;
exgcd(a,mod,x,y);
return (x%mod+mod)%mod;
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i];M*=a[i];
}
for(int i=1;i<=n;i++)m[i]=M/a[i],t[i]=ny(m[i],a[i]);
for(int i=1;i<=n;i++)x+=(b[i]*m[i]%M*t[i]%M),x%=M;
cout<<x;
return 0;
}