比赛 组合计数1 评测结果 ATTTTTTTTT
题目名称 简单的多重背包 最终得分 10
用户昵称 LikableP 运行时间 21.901 s
代码语言 C++ 内存使用 1.59 MiB
提交时间 2026-02-26 11:12:18
显示代码纯文本
#include <cstdio>
#include <numeric>

const int MAXN = 1e5 + 10;

int n;
int count[MAXN];
int ans;

void dfs(int now, int siz, int st) {
  // printf("[%d %d]\n", now, siz);
  if (now == n + 1 || siz > n) {
    if (siz == n) {
      if (++ans == 23333333) ans = 0;
    }
    return ;
  }

  for (int i = st; i <= count[now]; ++i) {
    dfs(now + 1, siz + i * now, i);
  }
  dfs(now + 1, siz, st);
}

int main() {
  #ifdef LOCAL
    freopen("!input.in", "r", stdin);
    freopen("!output.out", "w", stdout);
  #else
    freopen("get_bag.in", "r", stdin);
    freopen("get_bag.out", "w", stdout);
  #endif

  scanf("%d", &n);
  std::iota(count + 1, count + n + 1, 1);

  dfs(1, 0, 1);

  printf("%d\n", ans);
  return 0;
}