母函数为 g(x) = (1+x+x^2+x^3…) * (1+x^4+x^8….) * (1+x^9+x^18…)…..最后求出x^n的系数即可
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
#define maxn 300
int c1[maxn], c2[maxn];
int main()
{
// freopen("in.txt", "r", stdin);
int n;
while(cin >> n && n)
{
for(int i = 0; i <= n; i++)
{
c1[i] = 1;
c2[i] = 0;
}
for(int i = 2; i * i <= n; i++)
{
int s = i * i;
for(int j = 0; j <= n; j++)
for(int k = 0; k + j <= n; k += s)
c2[k+j] += c1[j];
for(int j = 0; j <= n; j++)
{
c1[j] = c2[j];
c2[j] = 0;
}
}
cout << c1[n] << endl;
}
return 0;
}