比赛 |
2024国庆练习3 |
评测结果 |
AAATAATTTT |
题目名称 |
简单的多重背包 |
最终得分 |
50 |
用户昵称 |
flyfree |
运行时间 |
15.134 s |
代码语言 |
C++ |
内存使用 |
13.57 MiB |
提交时间 |
2024-10-06 16:55:07 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 23333333
#define MAXN 3010
inline ll read(){
ll 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*10+c-'0';
c=getchar();
}
return x*f;
}
ll dp[MAXN][MAXN];
ll n;
int main(){
freopen("get_bag.in","r",stdin);
freopen("get_bag.out","w",stdout);
n=read();
dp[0][0]=1;
for(int i=1;i<=n;i++){
for(int j=0;j<=n;j++){
dp[i][j]=dp[i-1][j];
for(int k=1;k<=i;k++){
if(j-i*k>=0){
dp[i][j]=(dp[i][j]+dp[i-1][j-i*k])%mod;
}else break;
}
}
}
cout<<dp[n][n];
return 0;
}