有大佬帮忙查查错吗?
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
long long m[12],a[12];
long long qmul(long long a,long long b,long long mod)
{
long long ans=0;
while(b>0)
{
if(b&1) ans=(ans+a)%mod;
a=(a+a)%mod;
b>>=1;
}
return ans;
}
long long exgcd(long long a,long long b,long long &x,long long &y){
long long d=a;
if (b) d=exgcd(b,a%b,y,x),y-=x*(a/b); else x=1,y=0;
return d;
}
long long inv(long long a,long long m){
long long x,y;
long long d=exgcd(a,m,x,y);
return d==1?(x+m)%m:-1;
}
long long CRT(long long a[],long long m[],int n){
long long M=1;
for (int i=0;i<n;i++){
M*=m[i];
}
long long ret=0;
for (int i=0;i<n;i++){
long long Mi=M/m[i];
ret+=qmul(qmul(Mi,inv(Mi,m[i]),M),a[i],M);
}
return (ret%M+M)%M;
}
int main(){
int n;
scanf("%d",&n);
for (int i=0;i<n;i++){
scanf("%d",&a[i]);
}
for (int i=0;i<n;i++){
scanf("%d",&m[i]);
a[i]=(a[i]%m[i]+m[i])%m[i];
}
cout<<CRT(a,m,n)<<endl;
return 0;
}