大意不再赘述。
思路:简单的背包问题。
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long int LL;
int V[30];
LL f[100010];
void init()
{
memset(f, 0, sizeof(f));
f[0] = 1;
}
int n, C;
LL dp()
{
for(int i = 1; i <= 21; i++)
{
for(int v = V[i]; v <= C; v++)
{
f[v] += f[v-V[i]];
}
}
return f[C];
}
void solve()
{
init();
LL ans = dp();
printf("%lld\n", ans);
}
int main()
{
for(int i = 1; i <= 25; i++) V[i] = i*i*i;
while(~scanf("%d", &C))
{
solve();
}
return 0;
}