#include <iostream>
#include <cstring>
#define mem(x, k) ((x), (k), sizeof(x))
#define M 310
using namespace std;
int g[M], G[M];
int main()
{
int n;
memset mem(g, 0);
memset mem(G, 0);
G[0] = 1;
for (int i=1;i<18;++i)
{
for (int j=0;j<M;++j)
for (int k=0; k+j<M; k+=i*i)
{
g[k+j] += G[j];
}
memcpy mem(G, g);
memset mem(g, 0);
}
while (scanf("%d", &n), n)
{
printf("%d\n", G[n]);
}
return 0;
}
hdu 1398
最新推荐文章于 2018-08-19 20:31:05 发布