题目:给你数n,问n可以有哪些组成方案(这些n的数字个数不超过n),母函数模板题
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
int a[125], t[125];//a[i]表示x^i的系数,即凑成数i的方案数
int main() {
while (1 == scanf("%d", &n)) {
for (int i = 0; i <= n; ++i) {//初始化第一个表达式 (1+x+x^2+…+x^n),系数均为1
a[i] = 1;
t[i] = 0;
}
for (int i = 2; i <= n; i++) {
for (int j = 0; j <= n; j++) {
for (int k = 0; j + k <= n; k = k + i) {
t[j + k] += a[j];
}
}
for (int j = 0; j <= n; j++) {
a[j] = t[j];
t[j] = 0;
}
}
printf("%d\n", a[n]);
}
return 0;
}