Code: Select all
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
long long LCS[10005][10005];
int main()
{
int n;
vector<int>div;
while(cin>>n)
{
if(n<=10000&&n>0)
{
for(int i=0;i<n;i++)
{
if((i*i*i)>n)
break;
div.push_back(i*i*i);
}
for(int i=0;i<div.size();i++)
LCS[0][i]=1;
for(int i=0;i<=n;i++)
LCS[i][0]=0;
for(int i=1;i<=n;i++)
for(int j=1;j<div.size();j++)
{
if(div[j]<=i)
LCS[i][j]=LCS[i][j-1]+LCS[i-div[j]][j];
else
LCS[i][j]=LCS[i][j-1];
}
cout<<LCS[n][div.size()-1]<<endl;
for(int i=1;i<=n;i++)
for(int j=1;j<div.size();j++)
LCS[i][j]=0;
div.clear();
}
}
return 0;
} :(