初学母函数。。。
http://www.wutianqi.com/?p=596 看的这个博客对母函数的讲解,不过感觉他在模板的注释中③那里注释有点错误。j指代的应该是指数,自己写两个式子算算就能看出来。
#include <cstdio>
const int MAXN = 130;
int C1[MAXN];
int C2[MAXN];
int main()
{
int num;
while(scanf("%d",&num) != EOF)
{
//这里是序列 1+x+x^2+x^3+...+x^n 时的系数
for(int i = 0; i <= num; ++i)
{
C1[i] = 1;
C2[i] = 0;
}
//这里从 第二个表达式开始 1+x^2+x^4+...+x^n
for(int i = 2; i <= num; ++i)
{
//合并前i个表达式 这里写上俩表达式自己乘起来一算就看懂了,比如(1+x+x^2+x^3)(1+x^2)
for(int j = 0; j <= num; ++j)
for(int k = 0; k+j <= num; k += i)
C2[k+j] += C1[j];
for(int j = 0; j <= num; ++j)
{
C1[j] = C2[j];
C2[j] = 0;
}
}
printf("%d\n",C1[num]);
}
return 0;
}