#include<stdio.h>
int flag[301];
void search(int num,int from)
{
int i;
if(num>=300)return;
flag[num]++;
for(i=from;i<18;i++)
search(num+i*i,i);
return;
}
main()
{
int i,n;
for(i=1;i<300;i++)
flag=0;
for(i=1;i<18;i++)
{
search(i*i,i);
}
while(1)
{
scanf(\"%d\",&n);
printf(\"%d\\n\",flag[n]);
}
} |