题目链接:hdu1398
和hdu1028一样,直接套模板
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 305;
int c1[N], c2[N];
int main()
{
int n,i,j,k;
for(i = 0; i < N; i ++)
c1[i] = 1, c2[i] = 0;
for(i = 2; i*i < N; i ++)
{
for(j = 0; j < N; j ++)
for(k = 0; k + j < N; k += i*i)
c2[j + k] += c1[j];
for(j = 0; j < N; j ++)
c1[j] = c2[j], c2[j] = 0;
}
while(scanf("%d",&n),n)
{
printf("%d\n",c1[n]);
}
return 0;
}