蒟蒻90分,实在不知道哪儿错了:
#include<bits/stdc++.h>
#define int __int128
using namespace std;
int n,a[11],b[11],ans;
void exgcd(int a,int b,int &x,int &y){
if(!b){
x=1,y=0;
return;
}
exgcd(b,a%b,x,y);
int t=x;
x=y;
y=t-a/b*y;
return;
}
int read(){
char c=getchar();
while(c<48||c>57) c=getchar();
int num=0;
while(c>=48&&c<=57){
num=(num<<3)+(num<<1)+c-48;
c=getchar();
}
return num;
}
void print(int num){
if(num){
stack<int> st;
while(num){
st.push(num%10);
num/=10;
}
while(!st.empty()){
putchar(st.top()+48);
st.pop();
}
}else putchar(48);
}
signed main(){
n=read();
for(int i=1;i<=n;i++) b[i]=read();
for(int i=1;i<=n;i++) a[i]=read();
for(int i=1;i<=n;i++) b[i]%=a[i];
int mod=1;
for(int i=1;i<=n;i++) mod*=a[i];
for(int i=1;i<=n;i++){
int pro=mod/a[i],x,y;
exgcd(pro,a[i],x,y);
ans=(ans+x*b[i]*pro)%mod;
}
if(ans<0) ans+=mod;
print(ans);
return 0;
}
有人帮我看看吗?
谢谢