#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=4e6+5;
const int mod=998244353,g=3,invg = 332748118;
ll rev[N];
inline ll qsm(ll a,ll b){
ll t=1;while(b){
if(b&1)t=t*a%mod;a=a*a%mod;b>>=1;
}return t;
}
inline void init(ll cnt,ll len){
for(int i=0;i<len;i++){
rev[i]=(rev[i>>1]>>1)|((i&1)<<(cnt-1));
}
}
inline void ntt(vector<ll>&x,ll len,ll flag){
for(int i=0;i<len;i++){
if(i<rev[i])swap(x[i],x[rev[i]]);
}
for(int h=2;h<=len;h<<=1){
ll wn=qsm(flag==1?g:invg,(mod-1)/h);
for(int j=0;j<len;j+=h){
ll w=1;
for(int k=j;k<j+h/2;k++){
ll u=x[k],v=w*x[k+h/2];
x[k]=(u+v)%mod;x[k+h/2]=(u-v)%mod;
w=w*wn%mod;
}
}
}
if(flag==-1){
int tmp=qsm(len,mod-2);
for(int i=0;i<len;i++){x[i]=x[i]*tmp%mod;}
}
}
inline vector<ll> read(int n){
vector<ll>a;for(int i=0;i<n;i++){ll x;cin>>x;a.push_back(x);}return a;
}
inline void print(vector<ll>a){
for(int i=0;i<a.size();i++){
cout<<(a[i]%mod+mod)%mod<<' ';
}cout<<endl;
}
inline vector<ll>operator *(vector<ll>a,vector<ll>b){
//cout<<"**";print(a);print(b);
vector<ll>c;int tmp=a.size()+b.size()-1,len=1,cnt=0;
while(len<tmp)len<<=1,cnt++;init(cnt,len);
a.resize(len);b.resize(len);c.resize(len);
ntt(a,len,1);ntt(b,len,1);
for(int i=0;i<len;i++)c[i]=a[i]*b[i]%mod;
ntt(c,len,-1);c.resize(tmp);
return c;
}
inline vector<ll>operator -(vector<ll>a,vector<ll>b){
vector<ll>c;int len=max(a.size(),b.size());
a.resize(len);b.resize(len);c.resize(len);
for(int i=0;i<len;i++)c[i]=(a[i]-b[i])%mod;
return c;
}
inline vector<ll>operator *(vector<ll>a,ll b){
int len=a.size();
for(int i=0;i<len;i++)a[i]=a[i]*b%mod;
return a;
}
inline vector<ll>operator +(vector<ll>a,vector<ll>b){
vector<ll>c;int len=max(a.size(),b.size());
a.resize(len);b.resize(len);c.resize(len);
for(int i=0;i<len;i++)c[i]=(a[i]+b[i])%mod;
return c;
}
inline vector<ll>trunc(vector<ll>a,int m){
a.resize(m);return a;
}
inline vector<ll>qsm(vector<ll>a,int b){
vector<ll>t;t.push_back(1);while(b){
if(b&1)t=a*t;a=a*a;b>>=1;
}return t;
}
int main(){
// ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
ll n,m;cin>>n>>m;n++,m++;
// vector<ll>a=read(n),b=read(m);
// print(a*b);
print(read(m)*read(n));
return 0;
}
这是本题的代码,main 函数里面的输入是反的。但是能 A 本题,为什么?(