hpu1028 整数划分

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
 1 #include<stdio.h>

 2 #include<string.h>

 3 

 4 int f[125][125];

 5 

 6 int fun(int m,int n)

 7 {

 8     if(f[m][n]) return f[m][n];

 9     if(m==1||n==1) return f[m][n]=1;

10     if(n>m) return f[m][n]=fun(m,m);

11     if(n==m) return f[m][n]=fun(m,n-1)+1;

12     else return f[m][n]=fun(m,n-1)+fun(m-n,n);

13 }

14 

15 int main()

16 {

17     int n;

18     while(scanf("%d",&n)!=EOF)

19         printf("%d\n",fun(n,n));

20     return 0;

21 }

 

 

 1 //母函数代码

 2 

 3 #include<stdio.h>

 4 #include<string.h>

 5 

 6 int a[125],b[125];

 7 

 8 int main()

 9 {

10     int i,j,k,n;

11     while(scanf("%d",&n)!=EOF)

12     {

13         for(i=0;i<=n;i++)

14         {

15             a[i]=1;

16             b[i]=0;

17         }

18         for(i=2;i<=n;i++)

19         {

20             for(j=0;j<=n;j++)

21                 for(k=0;k+j<=n;k+=i)

22                     b[j+k]+=a[j];

23             for(j=0;j<=n;j++)

24             {

25                 a[j]=b[j];

26                 b[j]=0;

27             }

28         }

29         printf("%d\n",a[n]);

30     }

31     return 0;

32 }

 

你可能感兴趣的:(HP)