HDU Ignatius and the Princess III (母函数)

Problem Description

"Well, it seems the first problem is too easy. I will let you know how foolish 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 a positive 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 P which indicate the different equations you have found.

Sample Input

4
10
20

Sample Output

5
42
627

Author

Ignatius.L

 1 /*
 2     母函数模板
 3     http://blog.csdn.net/vsooda/article/details/7975485  详解
 4 */
 5 #include<cstdio>
 6 #include<iostream>
 7 #define MAXN 121
 8
 9 using namespace std;
10
11 int c1[MAXN];
12 int c2[MAXN];
13
14 int n;
15
16 int main() {
17     while(~scanf("%d",&n)) {
18         for(int i=0;i<=n;i++) {
19             c1[i]=1;c2[i]=0;
20         }
21         for(int i=2;i<=n;i++) {
22             for(int j=0;j<=n;j++)
23               for(int k=0;k+j<=n;k+=i)
24                 c2[j+k]+=c1[j];
25             for(int j=0;j<=n;j++) {
26                 c1[j]=c2[j];
27                 c2[j]=0;
28             }
29         }
30         printf("%d\n",c1[n]);
31     }
32     return 0;
33 }

代码

时间: 2024-11-06 10:39:31

HDU Ignatius and the Princess III (母函数)的相关文章

HDU 1028 Ignatius and the Princess III(母函数)

Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15794    Accepted Submission(s): 11138 Description "Well, it seems the first problem is too easy. I will let you kno

hdu 1028 Sample Ignatius and the Princess III (母函数)

Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25929    Accepted Submission(s): 17918 Problem Description "Well, it seems the first problem is too easy. I will let

Ignatius and the Princess III(母函数)

Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 16028    Accepted Submission(s): 11302 Problem Description "Well, it seems the first problem is too easy. I will let

HDU1028 Ignatius and the Princess III 母函数

Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25867    Accepted Submission(s): 17879 Problem Description "Well, it seems the first problem is too easy. I will let

HDU 1028 HDU Ignatius and the Princess III

简单的钱币兑换问题,就是钱的种类多了一点,完全背包. #include<cstdio> #include<cstring> int main () { int i,j,dp[125]; memset(dp,0,sizeof(dp)); dp[0]=1; for(i=1; i<=120; i++) for(j=i; j<=120; j++) dp[j]+=dp[j-i]; while(~scanf("%d",&i)) printf("

hdu 1028 Ignatius and the Princess III(母函数,完全背包)

http://acm.hdu.edu.cn/showproblem.php?pid=1028 整数划分问题. 第一道母函数...母函数入门 小于等于n的整数共有n个,1,2......n,每个数都有无限多个,对于整数1,它所对应的母函数为(1+x+x^2+...+x^k+...),整数2对应的母函数为(1+x^2+X^4+...+x^(2*k)+...),整数3对应的母函数为(1+x^3+x^6+...+x^(3*k)+...),以此类推,直到整数n. 那么n的整数划分的个数就是这n个母函数乘积

(简单母函数模板)hdu 1028 Ignatius and the Princess III

Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 14405    Accepted Submission(s): 10142 Problem Description "Well, it seems the first problem is too easy. I will le

hdu 1028 Ignatius and the Princess III 【整数划分】

Ignatius and the Princess III                                                                                       Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 15730    Accepted Submission(

HDU 1028 Ignatius and the Princess III dp

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1028 一道经典题,也是算法设计与分析上的一道题,可以用递推,动态规划,母函数求解,我用的是动态规划,也就是递推的变形. dp[i][j]表示数i的划分中最大数不超过j的划分的个数 状态转移方程: if(j > i) dp[i][j] = dp[i][i]; if(j == i) dp[i][j] = dp[i][j - 1] + 1; if(j < i) dp[i][j] = dp[i][j -