code:
#include<bits/stdc++.h>
using namespace std;
void exgcd(long long a,long long b,long long &x,long long &y){
if(!b){
x=1,y=0;
return;
}else{
exgcd(b,a%b,x,y);
long long t=x;
x=y;
y=t-(a/b)*y;
}
}
long long crt(long long k,long long a[],long long r[]){
long long n=1,ans=0,m,x,y;
for(long long i=1;i<=k;i++)
n=n*r[i];
for(long long i=1;i<=k;i++){
m=n/a[i];
exgcd(m,a[i],x,y);
ans=((ans+m*x*r[i])%n+n)%n;
}
return (ans+n)%n;
}
long long n,a[10],r[10];
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i]>>r[i];
cout<<crt(n,a,r);
return 0;
}
自我感觉没啥问题