#include<iostream> using namespace std; int c1[301],c2[301]; int main() { int i,j,k; int n; while(cin>>n&&n) { for(i=0;i<=n;i++) c1[i]=1,c2[i]=0; for(i=2;i<=17;i++) { for(j=0;j<=n;j++) for(k=0;j+k<=n;k+=i*i) c2[j+k]+=c1[j]; for(j=0;j<=n;j++) c1[j]=c2[j],c2[j]=0; } cout<<c1[n]<<endl; } system("pause"); return 0; } http://acm.hdu.edu.cn/showproblem.php?pid=1398