很水的一道题,DP可以, 母函数也可以……
母函数代码:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n, num1[124], num2[124];//对小于100的整数进行划分
int i, j, k;
while( cin>>n )
{
for(i=0; i<=n; i++)//初始化
{
num1[i]=1;
num2[i]=0;
}
//多项式乘法:以前i-1个表达式之极的每一项乘以第i个表达式的每一项
for(i=2; i<=n; i++)//i代表第i个表达式
{
for(j=0; j<=n; j++)//j代表前i-1个表达式相乘后各项的指数
for(k=0; k+j<=n; k+=i)//k代表第i个表达式中第k/i项的指数
{
num2[k+j]+=num1[j];
}
for(j=0; j<=n; j++)
{
num1[j]=num2[j];
num2[j]=0;
}
}
cout<<num1[n]<<endl;
}
}