提交时间:2026-04-11 15:52:00

运行 ID: 41207

#include<bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int,int> #define fr first #define sc second #define mk make_pair const int MAXN=20010,N=20,Mod=998244353; int read(){int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;} int Pow(ll x,int y){int rt=1;while(y){if(y&1)rt=rt*x%Mod;x=x*x%Mod,y>>=1;}return rt;} char s[N]; void write(int x){int cnt=0;while(x)s[++cnt]=x%10+'0',x/=10;while(cnt)putchar(s[cnt--]);puts("");} int n,k,v[MAXN]; ll g[MAXN],f[MAXN],S[MAXN],jc[MAXN]; void slv(){ n=read(),k=read(); f[0]=1,S[0]=1; for(int i=1;i<=2*n;i++)v[i]=i*(i-1)/2; jc[0]=1; for(int i=1;i<=n;i++)jc[i]=jc[i-1]*i%Mod; jc[n]=Pow(jc[n],Mod-2); for(int i=n-1;i>=1;i--)jc[i]=jc[i+1]*(i+1)%Mod; for(int i=1;i<=n;i++){ for(int j=i;j>=1;j--)S[j]=(S[j-1]+S[j]*j)%Mod;S[0]=0; for(int j=i*2;j>=2;j--){ f[j]=(f[j]+f[j-1]*2+f[j-2])*v[j]%Mod; g[i]+=f[j]; } g[i]%=Mod; f[0]=f[1]=0; g[i]=Pow(g[i],k); for(int j=1;j<i;j++)g[i]-=g[j]*S[j]%Mod; g[i]=(g[i]%Mod+Mod)%Mod; write(g[i]*jc[i]%Mod); } } signed main(){ // freopen("1.in","r",stdin);freopen("1.out","w",stdout); slv(); // cerr<<clock()*1.0/CLOCKS_PER_SEC<<"s\n"; return 0; }