【HDU1398】Square Coins 母函数

来源:互联网 发布:递推算法求韩信点兵 编辑:程序博客网 时间:2024/03/29 13:37

AC通道:http://vjudge.net/problem/HDU-1398

【题意】

给你一个数,让你求出1~17中每个数的平方任意组合,有几种情况满足条件。

【题解】

构造函数f(x)=(1+x+x^2+……)*(1+x^4+x^8+……)*(1+x^9+x^18+……)*……

然后就是模板了

/************  HDU 1398  by chty  2016.12.4************/#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<ctime>#include<cmath>#include<algorithm>using namespace std;#define FILE "read"#define MAXN 310int n,c1[MAXN],c2[MAXN];int main(){freopen(FILE".in","r",stdin);freopen(FILE".out","w",stdout);while(~scanf("%d",&n)&&n){for(int i=0;i<=n;i++)  c1[i]=1;for(int i=2;i*i<=n;i++){for(int j=0;j<=n;j++)for(int k=0;k+j<=n;k+=i*i)c2[k+j]+=c1[j];for(int j=0;j<=n;j++) c1[j]=c2[j],c2[j]=0;}printf("%d\n",c1[n]);}return 0;}



1 0