less than 300
会出现300的数据
所以开大点.....
#include <iostream>
using namespace std;
int cl[1000],c2[1000];
int main()
{
int n;
int i,j,k;
while(cin>>n,n)
{
for(i = 0;i <= n; i++)
{
cl[i] = 1;
c2[i] = 0;
}
for(i = 2; i*i <= n; i++)
{
for(j = 0; j <= n; j++)
for(k = 0; j+k <= n; k+=i*i)
c2[k+j] += cl[j];
for(j = 0; j <= n; j++)
{
cl[j] = c2[j];
c2[j] = 0;
}
}
cout<<cl[n]<<endl;
}
return 0;
}