题目链接
d[i][j]表示用不大于i的整数的立方,累加和为j的方案
可以优化
#include<cstdio>
#include<cstring>
const int N=25;
const int M=1e4+10;
typedef unsigned long long ull;
ull d[N][M];
void Init()
{
for(int i=1;i<=10000;i++)d[1][i]=1;
for(int i=1;i<=21;i++)d[i][0]=1;
for(int i=2;i<=21;i++)
for(int j=1;j<=10000;j++)
{
d[i][j]=d[i-1][j];
if(j-i*i*i>=0)d[i][j]+=d[i][j-i*i*i];
}
}
int main()
{
int n;
Init();
while(~scanf("%d",&n))
printf("%llu\n",d[21][n]);
return 0;
}