路过此题,顺手摘下。。
#include<iostream>
using namespace std;
#define maxn 125
int c1[maxn], c2[maxn];
int main()
{
int n;
while(~scanf("%d", &n))
{
for(int i = 0; i <= n; i++)
{
c1[i] = 1;
c2[i] = 0;
}
for(int i = 2; i <= n; i++)
{
for(int j = 0; j <= n; j++)
for(int k = 0; k+j <= n;k+=i)
c2[k+j] += c1[j];
for(int i = 0; i <= n; i++)
{
c1[i] = c2[i];
c2[i] = 0;
}
}
printf("%d\n", c1[n]);
}
return 0;
}