//母函数模板 //形如(1+x^1+x^2+x^3+....+x^n)*(1+x^2+x^4+x^6+....+x^n)*...... (1+x^m+x^2m+x^3m+....+x^n) #includeiostream using namespace std ; const int lmax = 10000 ; int c1 [ lmax + 1 ], c2 [ lmax + 1 ]; int main () { int n , i , j
//母函数模板
//形如(1+x^1+x^2+x^3+....+x^n)*(1+x^2+x^4+x^6+....+x^n)*......
(1+x^m+x^2m+x^3m+....+x^n)#include<iostream>
using namespace std;
const int lmax=10000;
int c1[lmax+1],c2[lmax+1];
int main()
{
int n,i,j,k;
while(cin>>n)
{
for(i=0;i<=n;i++)
{
c1[i]=1;c2[i]=0;
}
for(i=0;i<=n;i++) c1[i]=1;
for(i=2;i<=n;i++)//一共有几个大括号(以第一个大括号为首,从与第二个大括号开始乘,
//一直往下乘,直到完全算完,只有一个大括号)
{
for(j=0;j<=n;j++)//第一个大括号中的所有元素
for(k=0;k+j<=n;k+=i)//第i个大括号中的所有元素
{c2[j+k]+=c1[j];}
for(j=0;j<=n;j++)//得到一个新的第一个大括号
{
c1[j]=c2[j];c2[j]=0;
}
}
cout<<c1[n]<<endl;
}
return 0;
}