Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
32586 | A21μΘ_wjy | 【S】T2 | C++ | 运行超时 | 35 | 1000 MS | 2584 KB | 1005 | 2024-09-15 14:11:01 |
#include<bits/stdc++.h> #define int long long using namespace std; const int mod=998244353; const int maxn=1007; int n,k; inline int qpow(int a,int b){ int ans=1; while(b){ if(b&1)ans=ans*a%mod; a=a*a%mod; b>>=1; } return ans; } int fac[maxn],ifac[maxn]; inline void Gfac(){ fac[0]=1; for(int i=1;i<maxn;i++)fac[i]=fac[i-1]*i%mod; ifac[maxn-1]=qpow(fac[maxn-1],mod-2); for(int i=maxn-2;i>=0;i--)ifac[i]=ifac[i+1]*(i+1)%mod; } inline int C(int n,int m){ if(n<0||m<0||n<m)return 0; return fac[n]*ifac[m]%mod*ifac[n-m]%mod; } int f[maxn][maxn]; signed main(){ Gfac(); cin>>n>>k; int pre=0; int ans=0; for(int x=1;x<=k;x++){ for(int i=0;i<=n;i++)for(int j=0;j<=k;j++)f[i][j]=0; f[0][0]=1; for(int i=0;i<n;i++){ for(int p=0;p<=x;p++){ for(int j=0;j<=k-p;j++)f[i+1][j+p]=(f[i][j]*C(j+p,p)%mod+f[i+1][j+p])%mod; } } ans=(ans+(f[n][k]-pre+mod)%mod*x%mod)%mod; pre=f[n][k]; } cout<<ans<<endl; }