hdu 1398 Square Coins (母函数)
#include<stdio.h> #include<string.h> int main() { int i,j,k,n,a[18][301]; memset(a,0,sizeof(a)); for(i=0;i<301;i++) a[1][i]=1; for(i=2;i<18;i++) { for(j=0;j<301;j++) for(k=0;j+i*i*k<301;k++) a[i][j+i*i*k]+=a[i-1][j]; } while(scanf("%d",&n)==1 && n) { printf("%d\n",a[17][n]); } return 0; }