90pts,我没了
查看原帖
90pts,我没了
149815
Isprime楼主2020/8/8 13:49

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;
}

2020/8/8 13:49
加载中...