母函数水题
#include<stdio.h> int c1[301],c2[301]; int main() { int t,n,m,i,j,s,k; while(scanf("%d",&n),n) { for(j=0;j<=n;j++) {c1[j]=1;c2[j]=0;} for(i=2;i<=n;i++) { for(j=0;j<=n;j++) for(k=0;k+j<=n;k=k+i*i) c2[j+k]+=c1[j]; for(j=0;j<=n;j++) { c1[j]=c2[j];c2[j]=0; } } printf("%d\n",c1[n]); } return 0; }