中国剩余定理原理以及模板:https://blog.csdn.net/tick_tock97/article/details/71313058
题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1079
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
long long m[101],a[101],p,n,Mod = 1e9,ans;
void ex_gcd(long long a,long long b,int &x,int &y){
if(b == 0){
x = 1;
y = 0;
return;
}
ex_gcd(b,a%b,x,y);
int tmp = x;
x = y;
y = tmp - (a/b)*y;
}
void solve(){
long long M = 1;
ans = 0;
for(int i = 0;i<n;++i){
M *= m[i];
}
for(int i = 0;i<n;++i){
int x,y;
long long Mi = M/m[i];
ex_gcd(Mi,m[i],x,y);
ans = (ans + x*Mi*a[i])%M;
}
while(ans < 0){
ans += M;
}
}
int main(){
cin>>n;
for(int i = 0;i<n;++i){
cin>>m[i]>>a[i];
}
solve();
cout<<ans<<endl;
return 0;
}