比赛 组合计数1 评测结果 AAATAATTTT
题目名称 简单的多重背包 最终得分 50
用户昵称 xuyuqing 运行时间 12.236 s
代码语言 C++ 内存使用 4.12 MiB
提交时间 2026-02-26 11:06:24
显示代码纯文本

#include <cstdio>
#include <iostream>
#include <vector>

using namespace std;

const int N = 114514;
const long long Mod = 23333333;

long long n;
long long f[N];
long long g[N];

int main () {
    
    freopen ("get_bag.in", "r", stdin);
    freopen ("get_bag.out", "w", stdout);
    
    cin >> n;
    f[0] = 1;
    for (long long i = 1; i <= n; i++) {
        for (long long j = 1; j <= i && j * i <= n; j++) {
            long long now = i * j;
            for (int k = n; k >= now; k--) {
                g[k] = (g[k] + f[k - now]) % Mod;
            }
            
        }
        for (int i = 1; i <= n; i++) {
            f[i] = (f[i] + g[i]) % Mod;
//            cout << f[i] << ' ';
            g[i] = 0;
        }
//        cout << endl;
    }
    
    cout << f[n] << endl;
    
    return 0;
}