// uva 11137 Ingenuous Cubrency//// 题目大意:// // 输入正整数n,将n写成若干个数的立方之和,有多少种//// 解题思路://// 注意到n只有10000,22的3次方就超过了10000,则用// d(i,j)表示用前i个数表示j的方法数,则完全背包套用模板// d(i,j) = d(i-1,j) + d(i , j - i * i * i);//// 感悟://// 这道题,就是完全背包嘛,要注意数据的范围,做题的时候// 这就是我的感悟~~~FINGTING#include#include #include #include using namespace std;typedef long long ll;ll d[23][10008];void init(){ memset(d,0,sizeof(d)); d[0][0] = 1; for (int i=1;i<=22;i++){ for (int j=0;j <=10000;j++){ if (j < i * i * i) d[i][j] = d[i-1][j]; else d[i][j] =d[i-1][j] + d[i][j- i * i * i]; } }}int main(){ init(); int n; while(scanf("%d",&n)!=EOF){ cout << d[22][n] << endl; }}