过了
```cpp
#include<bits/stdc++.h>
#define sf scanf
#define pf printf
using namespace std;
typedef long long ll;
const int N=4e5+3,mod=998244353;
const int g=3;
int re[N];
int a[N],b[2][N];
int n,lim,len;
void reverse(int lim,int len){
for(int i=1;i<lim;i++) re[i]=(re[i>>1]>>1)|((i&1)<<(len-1));
}
int add(int a,int b){
a=a+b;
if(a>=mod) a-=mod;
return a;
}
int ksm(int a,int b){
int s=1;
while(b){
if(b&1) s=1ll*s*a%mod;
a=1ll*a*a%mod;
b>>=1;
}
return s;
}
void NTT(int *c,int lim,int type){
for(int i=0;i<lim;i++){
if(i<re[i]) swap(c[i],c[re[i]]);
}
for(int mid=1;mid<lim;mid<<=1){
int G=ksm(g,(mod-1)/(mid<<1));
if(type==-1) G=ksm(G,mod-2);
for(int r=mid<<1,j=0;j<lim;j+=r){
int w=1;
for(int i=0;i<mid;i++,w=1ll*w*G%mod){
int a=c[j+i],b=1ll*c[j+mid+i]*w%mod;
c[j+i]=add(a,b);
c[j+mid+i]=add(a,mod-b);
}
}
}
if(type==-1){
int inv=ksm(lim,mod-2);
for(int i=0;i<lim;i++) c[i]=1ll*c[i]*inv%mod;
}
}
void mul(int *a,int *b,int lim){
int A[N],B[N];
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
for(int i=0;i<lim;i++) A[i]=a[i],B[i]=b[i];
NTT(A,lim,1);
NTT(B,lim,1);
for(int i=0;i<lim;i++) A[i]=1ll*A[i]*B[i]%mod;
NTT(A,lim,-1);
for(int i=0;i<lim;i++) a[i]=A[i];
}
int t[N];
void getinv(int *a,int &cur,int n){
b[cur][0]=ksm(a[0],mod-2);
int bas=1,lim=2,len=1;
while(bas<=(n<<1)){
reverse(lim,len);
cur^=1;
memset(b[cur],0,sizeof(b[cur]));
for(int i=0;i<bas;i++){
b[cur][i]=add(b[cur^1][i]<<1,0);
}
mul(b[cur^1],b[cur^1],lim);
for (int i = bas; i < lim; i ++ ) b[cur^1][i] = 0;
std :: memset(t, 0, sizeof t);
for (int i = 0; i < bas; i ++ ) t[i] = a[i];
mul(b[cur^1],t,lim);
for(int i=0;i<bas;i++){
b[cur][i]=add(b[cur][i],mod-b[cur^1][i]);
}
bas<<=1,lim<<=1,++len;
}
}
int main(){
sf("%d",&n);
for(int i=0;i<n;i++) sf("%d",&a[i]);
int cur=0;
getinv(a,cur,n);
for(int i=0;i<n;i++) pf("%d ",b[cur][i]);
}
/*
7
7 6 5 4 3 2 1
*/
```
by Aaron_Romeo @ 2024-04-27 16:59:36
@[txppdd](/user/542128) 原因是多项式乘法溢出了
by Aaron_Romeo @ 2024-04-27 17:01:00
@[Aaron_Romeo](/user/481106) /bx dalao
已关。
by txppdd @ 2024-05-03 16:56:46