C 小信分蛋糕
题意:n个容器,每个可以存储1~m,一共最多存储k(可不存满),求几种存法(答案%=998244353)
范围及限制:时间:1s 空间:256M 对于100%的数据,1≤n,m≤50,n≤k≤n×m。
思路:深搜出所有可能,顺便统计一下
注意:一看到mod直接long long 完全很在怕的:P,然后就T掉辽,所以加f数组用来记忆化。
代码:
#include<bits/stdc++.h>
using namespace std;
long long n,m,k;
long long f[55][2505],mod=998244353;
long long dp(long long x,long long now){
if(x>n){
if(now<=k) return 1;
return 0;
}//边界
if(f[x][now]!=-1) return f[x][now];//记忆化
long long ans=0;
for(long long i=1;i<=min(m,k-now);i++){
ans+=dp(x+1,now+i);
ans%=mod;
}
f[x][now]=ans%mod;
return f[x][now];
}
int main(){
memset(f,-1,sizeof(f));
scanf("%d%d%d",&n,&m,&k);
printf("%d",dp(1,0));
return 0;
}