给你一个数 让你求出1~17中每个数的平方任意组合 有几种情况满足条件。
#include<stdio.h>
#include<math.h>
#define max 302
int num1[300];
int num2[300];
void init()
{
for(int i=0; i<max; i++)
{
num1[i]=1;
num2[i]=0;
}
for(int i=2; i<=17; i++)
{
for(int j=0; j<max; j++)
for(int k=0; k+j<max; k+=i*i)//注意:这里是平方。
{
num2[k+j]+=num1[j];
}
for(int i=0; i<max; i++)
{
num1[i]=num2[i];
num2[i]=0;
}
}
}
int main()
{
int n;
init();
while(scanf("%d",&n),n)
{
printf("%d\n",num1[n]);
}
return 0;
}