#include <bits/stdc++.h>
#pragma optimize O3
#define int long long
#define mod 998244353ll
using namespace std;
int n;
int gcd(int a, int b) {
int az = __builtin_ctz(a);
int bz = __builtin_ctz(b);
int z = min(az, bz);
b >>= bz;
while (a) {
a >>= az;
int diff = a - b;
az = __builtin_ctz(diff);
b = min(a, b), a = abs(diff);
}
return b << z;
}
signed main(){
cin>>n;
vector a(n+1,0);
vector b(n+1,0);
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
cin>>b[i];
}
for(int i=1;i<=n;i++){
long long ans=0,num=i;
for(int j=1;j<=n;j++){
ans+=num*gcd(a[i],b[j]);
ans%=mod;
num=num*i%mod;
}
cout<<ans%mod<<endl;
}
return 0;
}
提交记录