#include<bits/stdc++.h>
#define int unsigned long long
using namespace std;
struct node{
int a,b;
}o[100010];
bool cmp(node x,node y){
if(x.a!=y.a)return x.a>y.a;
else return x.b>y.b;
}
int n,a,b,aa,bb;
int gcd(int x,int y){
if(y==0)return x;
else return gcd(y,x%y);
}
int maxx(int x,int y){
if(x>y)return x;
else return y;
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>o[i].b;
for(int i=1;i<=n;i++)cin>>o[i].a;
sort(o+1,o+n+1,cmp);
for(int i=1;i<=n;i++){
if(o[i].a==o[i-1].a)continue;
a=o[i].a;
b=o[i].b;
if(aa==0&&bb==0){
aa=a;
bb=b;
continue;
}
int fir=b,sec=bb;
while(fir!=sec){
if(fir<sec){
int bei=(sec-fir)/a;
bei=maxx(bei,1);
fir+=bei*a;
}else{
int bei=(fir-sec)/aa;
bei=maxx(bei,1);
sec+=bei*aa;
}
}
int gc=gcd(aa,a);
aa=(aa*a)/gc;
bb=sec%aa;
}
cout<<bb<<endl;
return 0;
}
tips:代码比(fēi)较(cháng)暴力,不喜勿喷。