Ignatius and the Princess III(hdu1028,母函数之整数划分)

http://acm.hdu.edu.cn/showproblem.php?pid=1028

Ignatius and the Princess III

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 10061    Accepted Submission(s): 7126

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

 

0MS 248K 295 B C++

*/

#include<stdio.h>
#include<string.h>
#include <iostream>
using namespace std;
int a[125];
int main()
{ int i,j;
  a[0]=1;
  for(i=1;i<=120;i++)
   for(j=0;i+j<=120;j++)
    a[i+j]+=a[j];
  int n;
    while(scanf("%d",&n)!=EOF)
    {
printf("%d\n",a[n]);
    }
    return 0;
}


你可能感兴趣的:(Ignatius and the Princess III(hdu1028,母函数之整数划分))