这道题目一看就是利用母函数,代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=1005;
int a1[maxn];
int a2[maxn];
int main()
{
int n,i;
int j,k;
while(scanf("%d",&n)!=EOF)
{
for(i=0; i<=n; i++)
{
a1[i]=1;
a2[i]=0;
}
for(i=2; i<=n; i++)
{
for(j=0; j<=n; j++)
{
for(k=0; k+j<=n; k+=i)
{
a2[k+j]+=a1[j];
}
}
for(j=0; j<=n; j++)
{
a1[j]=a2[j];
a2[j]=0;
}
}
cout<<a1[n]<<endl;
}
return 0;
}