WA on #7
查看原帖
WA on #7
959024
CQ天神楼主2024/7/15 16:17

求看一看哪错了

#include <bits/stdc++.h>
#define maxn 1000005
using namespace std;
inline __int128 read(){
    __int128 x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-') f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=x*10+ch-'0';
        ch =getchar();
    }
    return x*f;
}
inline void print(__int128 x){
    if(x<0){
        putchar('-');
        x=-x;
    }
    if(x>9) print(x/10);
    putchar(x%10+'0');
}
__int128 n,x,y,a[maxn],b[maxn];
void exgcd(__int128 a,__int128 b,__int128 c){
	if(b==0){
		x=c/a,y=0;
		return;
	}
	exgcd(b,a%b,c);
	__int128 t=y;
	y=x-(a/b)*y,x=t;
}
signed main(){
	n=read();
	for(__int128 i=1;i<=n;++i) a[i]=read();
	for(__int128 i=1;i<=n;++i) b[i]=read();
	__int128 now=a[1],lcm=b[1];
	for(__int128 i=2;i<=n;++i){
		__int128 d=__gcd(lcm,b[i]);
		if((a[i]-now)%d){
			puts("-1");
			break;
		}
		exgcd(lcm,b[i],a[i]-now);
		x=(x%b[i]+b[i])%b[i];
		now+=lcm*x;
		lcm=lcm/d*b[i];
		now=(now%lcm+lcm)%lcm;
	}
	print(now);
	return 0;
}
2024/7/15 16:17
加载中...