zoukankan      html  css  js  c++  java
  • 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): 9017    Accepted Submission(s): 6341

    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
     
     
     
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    
    using namespace std;
    
    int c1[130],c2[130];
    
    int main(){
    
        //freopen("input.txt","r",stdin);
    
        int n;
        while(~scanf("%d",&n)){
            for(int i=0;i<n;i++){
                c1[i]=0;
                c2[i]=0;
            }
            c1[0]=1;
            for(int i=1;i<=n;i++){      //要乘以n个多项式
                for(int j=0;j<=n;j++)   //c1的各项的指数
                    for(int k=0;j+k*i<=n;k++)   //k*i表示被乘多项式各项的指数,(X^0*i + X^1*i + X^2*i + ……)
                        c2[j+k*i]+=c1[j];       //指数相加得j+k*i,加多少只取决于c1[j]的系数,因为被乘多项式的各项系数均为1
                for(int j=0;j<=n;j++){      
                    c1[j]=c2[j];
                    c2[j]=0;
                }
            }
            printf("%d\n",c1[n]);
        }
        return 0;
    }
  • 相关阅读:
    Notes of Daily Scrum Meeting(12.18)
    Notes of Daily Scrum Meeting(12.17)
    Notes of Daily Scrum Meeting(12.16)
    Notes of Daily Scrum Meeting(12.8)
    Notes of Daily Scrum Meeting(12.5)
    Notes of Daily Scrum Meeting(12.3)
    Notes of Daily Scrum Meeting(11.12)
    Linux中profile、bashrc、bash_profile之间的区别和联系
    Linux GCC编译
    mysql 5.7.16 远程连接
  • 原文地址:https://www.cnblogs.com/jackge/p/3028154.html
Copyright © 2011-2022 走看看