我采用《孙子算经》的解法,TLE了:
#include<bits/stdc++.h>
using namespace std;
long long zhi[25],a[25],md[25],ans=0,lcm[25];
int n;
int main(){
cin>>n;
for(int i=0;i<n;i++)cin>>a[i]>>md[i];
for(int i=0;i<n;i++)lcm[i]=1;
for(int i=0;i<n;i++)for(int j=0;j<n;j++)if(j!=i)lcm[i]*=j;
for(int i=0;i<n;i++)
for(int j=0;;j++){
if(lcm[i]*j%a[i]==1){
zhi[i]=lcm[i]*j;
break;
}
}
for(int i=0;i<n;i++)ans+=zhi[i]*md[i]%(a[0]*lcm[0]);
cout<<ans;
}
本地运行判定为死循环。