提交时间:2026-04-11 20:50:28

运行 ID: 41255

#include<bits/stdc++.h> using namespace std; const int N=1e4+10; const int mod=998244353; int qp(int a,int b){ int x=1; for(;b;b>>=1,a=1ll*a*a%mod)if(b&1) x=1ll*x*a%mod; return x; } int n,k; int fac[N],ifac[N],c[N*2]; int f[N*2],g[N],ans[N]; inline void rec(int &x){(x>=mod)?(x-=mod):0;} int main(){ //freopen("count.in","r",stdin); //freopen("count.out","w",stdout); ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n>>k; fac[0]=1; for(int i=1;i<=n;i++) fac[i]=1ll*fac[i-1]*i%mod; ifac[n]=qp(fac[n],mod-2); for(int i=n-1;i>=0;i--) ifac[i]=1ll*ifac[i+1]*(i+1)%mod; const int iv2=qp(2,mod-2); f[0]=1;g[0]=1; for(int i=1;i<=n*2;i++) c[i]=1ll*i*(i-1)*iv2%mod; for(int i=1;i<=n;i++){ int w=0;int o=i&1; for(int j=i*2;j>=2;j--){ f[j]=(1ll*f[j-2]+2ll*f[j-1]+1ll*f[j])*c[j]%mod; rec(w+=f[j]); } for(int j=i;j>=1;j--){ g[j]=(1ll*g[j]*j+g[j-1])%mod; }f[0]=0;g[0]=0; w=qp(w,k);ans[i]=w; for(int j=1;j<i;j++){ rec(ans[i]+=mod-1ll*g[j]*ans[j]%mod); } cout<<1ll*ans[i]*ifac[i]%mod<<'\n'; } return 0; }