hdu 1028(普通型母函式)
Ignatius and the Princess III
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6546 Accepted Submission(s): 4625
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 題目型別:普通型母函式 題目描述:問整數拆分有多少種形式 題目分析: 母函式又名生成函式,對於數列{ A(n) } n >= 0,∑(k>=0) A(k) * X^k = A(0) + A(1) * X^1 + A(2) * X^2 +……+ A(k) * X ^ k 為數列{A(n)}的普通型母函式,簡稱普母函式。 記多重集 X = { n1x1, n2x2,……,nnxn}, x1,x2,x3,x4,……xn表示n個不同的元素。 ni( 1<= i <= n)為正整數或無窮,ni表示元素xi在計數問題中可取的最多的重數(無窮表示可取重數不受限制),稱 X = { n1x1, n2x2,……,nnxn} 為 x1,x2,x3,....,xn的多重集。 對於類似於多重集計數問題的組合問題,可以用普母函式來解決。 多重集中的每個元素,匯出一個相應的母函式。比如 nixi, ni = 2 xi = 4.那麼相應的母函式G(x) = 1 + x ^ 4 + x ^ 8 然後把生成的所有母函式相乘,即可求解問題。 模擬多項式相乘的時候,可以用 a[i] 的值 表示 x^i 的係數。 那麼 c * x^i * d * x^j 就相當於 a[i] * b[j] ,結果為 r[i+j] = a[i] * b[j]。 程式碼如下:
#include <stdio.h> #include <memory.h> #define N 121 int result[N]; int temp[N]; void init(){ int i,j,k; memset(result,0,sizeof(result)); memset(temp,0,sizeof(temp)); for( i = 0; i < N; i++) { result[i] = 1; } for( k = 2; k < N; k++){ for( i = 0; i < N; i++){ for( j = 0; j < N; j += k) { if( result[i] != 0 && i + j < N) { temp[i+j] += result[i]; } } } for( i = 0; i < N; i++){ result[i] = temp[i]; temp[i] = 0; } } } int main() { init(); int n; while(scanf("%d",&n) != EOF) { printf("%d\n",result[n]); } return 0; }
相關推薦
hdu 1028(普通型母函式)
Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6
hdu 1709(普通型母函式)
The Balance Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3249 Accepted Su
B.找單詞——(HDU 2082 普通型母函式)
傳送門 找單詞 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S
hdu 1171(普通型母函式)
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 11501 Acce
HDU 1028 (母函式或者dp)
“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<
hdu 2082--找單詞 普通型母函式的應用
B - 找單詞 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u De
HDU 2082 普通型母函數
ace () -1 分析 show pac include 分享 amp 分析: 組成單詞好說,價值如何體現? 改變指數就行,例如: 這樣,組成的單詞,指數就是權值,多項式相乘,指數小於50的就OK; 1 #include <b
2017多校訓練賽第一場 HDU 6042 (母函式)
Journey with Knapsack Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 164 A
普通型母函式原理及模板程式碼詳解
母函式有很多種,最常用的有普通型母函式和指數型母函式。兩者區別是:普通型母函式主要是來求組合的方案數,而指數型母函式是求多重排列數。下面只講解普通型母函式的相關知識。定義:若函式G(x)=a0+a1*x
普通型母函式
生成函式(母函式)有普通生成函式和指數生成函式: 1.普通生成函式用於解決多重集的組合問題 2.指數型母函式用於解決多重集的排列問題 母函式可以解決遞迴數列的通項問題:斐波那契數列、卡特蘭數列等 普通母函式: 構造母函式G(x), G(x) = a0 + a
普通型母函式和指數型母函式
母函式:摘自百度百科 生成函式即母函式,是組合數學中尤其是計數方面的一個重要理論和工具。生成函式有普通型生成函式和指數型生成函式兩種,其中普通型用的比較多。形式上說,普通型生成函式用於解決多重集的組合問題,而指數型母函式用於解決多重集的排列問題。母函式還可以解決遞迴數列的通
HDU 2152(母函式)
Problem Description 轉眼到了收穫的季節,由於有TT的專業指導,Lele獲得了大豐收。特別是水果,Lele一共種了N種水果,有蘋果,梨子,香蕉,西瓜……不但味道好吃,樣子更是好看。 於是,很多人們慕名而來,找Lele買水果。 甚至連大名鼎鼎的HDU ACM
hdu 2082(普通母函式)
/* hdu 2082 普通母函式 直接套模板就行 普通母函式主要解決組合問題 大概思路是開2個數組,c1[ ]儲存當前得到的多項式各項係數,c2[ ]儲存每次計算時的臨時結果, (解釋下c1[a]=b,其中a為多項式中x的指
hdu 1709 (母函式,有些特殊)
母函式。。 #include"stdio.h" #include"string.h" int main() { int a[10008]; int b[10008]; in
HDU 1709 (母函式)
The Balance Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot
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): 12
HDU 1028 母函式做法
題目連結 http://acm.hdu.edu.cn/showproblem.php?pid=1028 其實就是母函式模板,當然用DP也能做。 AC程式碼 https://github.com/Kiritow/OJ-Problems-Source/blob/master/H
HDU 1028 母函式
Ignatius and the Princess IIIProblem Description "Well, it seems the first problem is too easy. I will let you know how foolish you are
hdu 1028 母函式模板
#include <iostream> #include <cstring> #define mem(x, k) ((x), (k), sizeof(x)) #define M
hdu 1028 母函式入門題
題意:給出n n<=120,拆分n的方法數? (1+x^2+x^3+..x^n) *(1+x^2+x^4+x^6+...) *(1+x^3+x^6+...) 第i個表示式代表了數i的選法:1代表不選i,1後的第j項(x^(ji))表示選j個i,求x^n的係數即可