EOJ 1009 整數的拆分 生成函式法

2021-09-25 20:33:36 字數 853 閱讀 1567

將正整數 n 表示成一系列正整數之和 : n=n1+n2+…+nk,其中 n1≥n2≥…≥nk≥1(k≥1)

正整數 n 的這種表示稱為正整數 n 的拆分。求正整數 n 的不同拆分個數。

例如,正整數 6 有如下 11 種不同的拆分 :

6;5+1;

4+2,4+1+1;

3+3,3+2+1,3+1+1+1;

2+2+2,2+2+1+1,2+1+1+1+1;

1+1+1+1+1+1。

例如,正整數 3 有如下 3 種不同的拆分 :

3;2+1;

1+1+1。

本題有多組測試資料,每組一行,每行有乙個正整數 n(1<=n<=100)

每組測試資料輸出一行,表示有多少種拆分方法

input

1

35

output

1

37

思路:

#include #include #define maxn 102

using namespace std;

int main()

; long long c2[maxn] = ; //用來記錄多項式乘法的中間結果

for(int i=0; ic1[i] = 1;

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

memcpy(c1, c2, maxn*sizeof(long long));

memset(c2, 0, maxn*sizeof(long long));

}cout<}

return 0;

}

整數的拆分

母函式將問題轉換為關於母函式的某種代數問題甚至變成關於母函式的某種形式的運算,以整數拆分為例.所謂的整數拆分,即將正整數n分解成 若干正整數的和,不考慮其求和的順序,一般假定 n n 1 n 2 cdots n k,n 1 geq n 2 geq n 3 geq cdots geq n k 而且分解...

整數的拆分

引自 華師大oj 1009 問題描述 將正整數n表示成一系列正整數之和 n n1 n2 nk,其中n1 n2 nk 1,k 1。正整數n的這種表示稱為正整數n的劃分。求正整數n的不 同劃分個數。例如正整數6有如下11種不同的劃分 6 5 1 4 2,4 1 1 3 3,3 2 1,3 1 1 1 2...

整數的拆分

整數拆分分為有序拆分和無序拆分 有序拆分 把n拆分為 r個數,就相當於把n個球用 r 1塊隔板插入到n 1個空隙裡 c r 1,n 1 放球模型,把n個無區別的球放入到r個有區別的盒子裡,每個盒子至少乙個。無序拆分 把n拆分為 r個數,把n個相同的球放入到r個相同的盒子裡,允許盒子為空。把n個相同的...