#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1000005,p=998244353,g=3,ig=332748118;
int n,a[N],b[N],c[N],d[N],e[N],r[N];
int qpow(int a,int x)
{
if(x==0)return 1;
if(x==1)return a%p;
int c=qpow(a,x/2),y=qpow(a,x%2);
return c*y%p*c%p;
}
void NTT(int *a,int op,int t)
{
for(int i=0;i<t;i++)if(i<r[i])swap(a[i],a[r[i]]);
for(int i=1,x,y,r;i<t;i<<=1)
{
if(~op)r=qpow(g,(p-1)/(i<<1));
else r=qpow(ig,(p-1)/(i<<1));
for(int j=0;j<t;j+=(i<<1))for(int k=0,w=1;k<i;k++,w=w*r%p)
{
x=a[j+k];y=w*a[i+j+k]%p;
a[j+k]=(x+y)%p;a[i+j+k]=(x-y+p)%p;
}
}
if(!~op)
{
int inv=qpow(t,p-2);
for(int i=0;i<t;i++)a[i]=a[i]*inv%p;
}
}
void mul(int *a,int n,int *b,int m,int *c)
{
int t=1,l=0;
while(t<=n+m){l++;t<<=1;}
for(int i=0;i<t;i++)r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));
NTT(a,1,t);NTT(b,1,t);
for(int i=0;i<t;i++)c[i]=a[i]*b[i]%p;
NTT(c,-1,t);
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
for(int i=0;i<n;i++){cin>>a[i];a[i]%=p;}
b[0]=qpow(a[0],p-2);
for(int i=1;i<n;i<<=1)
{
for(int j=0;j<2*i;j++)d[j]=a[j];
for(int j=0;j<i;j++)e[j]=b[j];
mul(d,2*i-1,b,i-1,c);
for(int j=0;j<2*i;j++)c[j]=p-c[j];
for(int j=2*i;j<n;j++)c[j]=0;
(c[0]+=2)%=p;
mul(e,i-1,c,2*i-1,b);
for(int j=2*i;j<n;j++)b[j]=0;
}
for(int i=0;i<n;i++)cout<<b[i]<<' ';
}
样例最高项输出 1027,其他都是对的。