HDU1028 Ignatius and the Princess III(整数划分,母函数模板题,无限制)
2018-01-31 16:12
716 查看
Problem Description
“Well, it seems the first problem is too easy. I will let you know howfoolish you are later.” feng5166 says.
“The second problem is, given an positive integer N, we define an
equation like this: N=a[1]+a[2]+a[3]+…+a[m]; a[i]>0,1<=m<=N; My
question is how many different equations you can find for a given N.
For example, assume N is 4, we can find: 4 = 4; 4 = 3 + 1; 4 = 2
+ 2; 4 = 2 + 1 + 1; 4 = 1 + 1 + 1 + 1; so the result is 5 when N is 4. Note that “4 = 3 + 1” and “4 = 1 + 3” is the same in this
problem. Now, you do it!”
Input
The input contains several test cases. Each test case contains apositive integer N(1<=N<=120) which is mentioned above. The input is
terminated by the end of file.
Output
For each test case, you have to output a line contains an integer Pwhich indicate the different equations you have found.
Sample Input
4 10 20
Sample Output
5 42 627
思路
这是母函数的入门题,关于母函数请看:母函数(Generating function)详解 — TankyWoo
母函数入门
母函数
母函数详解和史上最通用最高效的母函数模板
这道题的题意就是整数划分问题,给你一个数n,让你求出这个数有几种不同的划分。每个数有无限个可以用.
那么做法就是利用母函数,小于等于
n的整数就是从
1~n,那么因为:
11的母函数是(x0+x1+x2+...+xk)(x0+x1+x2+...+xk)
22的母函数是(x0+x2+x4+...+x2k)(x0+x2+x4+...+x2k)
22的母函数是(x0+x3+x6+...+x3k)(x0+x3+x6+...+x3k)
我们只需要一直加到nn,把这些多项式的乘积展开,其中xnxn次方的系数就是答案。
代码
/* 此处省略v[i],因为v[i]=i */ #include <cstdio> #include <cstring> #include <cctype> #include <stdlib.h> #include <string> #include <map> #include <iostream> #include <stack> #include <cmath> #include <queue> #include <vector> #include <algorithm> using namespace std; typedef long long ll; #define inf 1000000 #define mem(a,b) memset(a,b,sizeof(a)) const int N=1000+7; int c1 ,c2 ; int main() { int n; while(~scanf("%d",&n)) { mem(c1,0); c1[0]=1; for(int i=1; i<=n; i++) { mem(c2,0); for(int j=0; j*i<=n; j++) for(int k=0; k+j*i<=n; k++) c2[k+j*i]+=c1[k]; memcpy(c1,c2,sizeof(c2)); } printf("%d\n",c1 ); } return 0; }
相关文章推荐
- Ignatius and the Princess III(hdu1028,母函数之整数划分)
- HDU 1028 Ignatius and the Princess III(母函数 或者 整数划分的DP动态规划)
- 【HDU 1028】【母函数 整数划分】Ignatius and the Princess III
- hdu1028 Ignatius and the Princess III && hdu2082 找单词 && poj1664 放苹果 && noj1046 正整数划分问题——整数划分
- HDU1028 Ignatius and the Princess III 【母函数模板题】
- HDOJ-1028Ignatius and the Princess III---(整数划分的母函数做法)
- HDU1028 Ignatius and the Princess III 【母函数模板题】
- HDU1028 Ignatius and the Princess III(整数拆分:母函数||DP)
- HDU 1028 Ignatius and the Princess III(DP,整数划分)
- hdu 1028Ignatius and the Princess III(整数划分)
- hdu1028 Ignatius and the Princess III (母函数习题)
- HDU 1028 Ignatius and the Princess III (母函数模板)
- hdu 1028 Ignatius and the Princess III(整数拆分较大数据量模板)
- HDOJ 1028 Ignatius and the Princess III(整数划分)
- HDU 1028Ignatius and the Princess III(母函数模板
- 【整数划分+DP】HDU_1028_D - Ignatius and the Princess III
- HDU1028 Ignatius and the Princess III【母函数】【完全背包】
- 【完全背包/母函数/递推】HDU1028-Ignatius and the Princess III
- HDU 1028 Ignatius and the Princess III(母函数模板)
- HDOJ 题目1028Ignatius and the Princess III(母函数模板)