http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2078
简单递推
代码:
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
#define ll long long
using namespace std;
const int N=10005;
ll sum[N][50];
int main()
{
//freopen("data.in","r",stdin);
memset(sum,0,sizeof(sum));
sum[0][1]=1;
for(int i=1;i<N;++i)
{
for(int j=1;j*j*j<=i;++j)
{
for(int l=1;l<=j;++l)
{
sum[i][j]+=(sum[i-j*j*j][l]);
}
sum[i][0]+=sum[i][j];
}
}
int k;
while(cin>>k)
{
cout<<sum[k][0]<<endl;
}
return 0;
}