#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
using namespace std;
int main()
{
int a[320],b[320],i,j,k,n;
while(cin>>n&&n)
{
for(i=0;i<=n;i++)//第一个表达式赋系数
{
a[i]=1;
b[i]=0;
}
for(i=2;i<=17;i++)//遍历剩下的16个表达式
{
for(j=0;j<=n;j++)//表达式中第j项
for(k=0;k+j<=n;k+=i*i)//限制为了防止爆掉和多余的 //因式的指数是隔 i*i 递增的。 相当于第i个表达式第的幂指数
b[k+j]+=a[j];
for(j=0;j<=n;j++)
{
a[j]=b[j];
b[j]=0;
}
}
cout<<a[n]<<endl;
}
}
hdu 1398 母函数初学
最新推荐文章于 2019-10-26 23:31:41 发布