exCRTWAon#7
查看原帖
exCRTWAon#7
556362
Unnamed114514楼主2023/5/30 23:33
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1e5+5;
int n,lcm,now,x,y,m[maxn],a[maxn];
inline void exgcd(int a,int b,int c){
	if(!b){
		x=c/a,y=0;
		return;
	}
	exgcd(b,a%b,c);
	int t=y;
	y=x-(a/b)*y,x=t;
}
inline void solve(){
	lcm=m[1],now=a[1];
	for(int i=2;i<=n;++i){
		int d=__gcd(lcm,m[i]);
		if((a[i]-now)%d){
			puts("-1");
			return;
		}
		exgcd(lcm,m[i],a[i]-now);
		x=(x%m[i]+m[i])%m[i];
		now+=lcm*x;
		lcm=lcm/d*m[i];
		now=(now%lcm+lcm)%lcm;
	}
	cout<<now<<endl;
	return;
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;++i)
		cin>>a[i];
	for(int i=1;i<=n;++i)
		cin>>m[i];
	solve();
	return 0;
}
2023/5/30 23:33
加载中...