rt,开了__int128#2WA
我 没 了
已经处理过负数了还是WA
#include <cstdio>
#include <cctype>
#define MAXK 15
#define int __int128
using namespace std;
__int128 read(){
__int128 x=0,f=1;
char ch=getchar();
while(!isdigit(ch)&&ch!='-')ch=getchar();
if(ch=='-')f=-1;
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return f*x;
}
void print(__int128 x) {
if(x<0) putchar('-'),x=-x;
if(x>9) print(x/10);
putchar(x%10+'0');
}
int k,m=1,ans;
int a[MAXK],b[MAXK],mi[MAXK];
inline int exgcd(int a,int b,int &x,int &y) {
if(!b) {x=1; y=0; return a;}
int d=exgcd(b,a%b,x,y);
int z=x; x=y; y=z-y*(a/b);
return d;
}
signed main() {
k=read();
for(register int i=1;i<=k;++i) a[i]=read();
for(register int i=1;i<=k;++i) b[i]=read(),m*=b[i];
for(register int i=1;i<=k;++i) {
mi[i]=m/b[i];
int x=0,y=0;
exgcd(mi[i],b[i],x,y);
if(x<0) x+=b[i];
ans+=(a[i]%b[i]+b[i])%b[i]*mi[i]*x;
}
print((ans+m)%m);
return 0;
}