分拆数
定义
把正整数分解成若干正整数的和
定理
① N拆分成不同整数的和的拆分数(不允许重复) 等于 N拆分成奇数的拆分数(允许重复)
② N拆分成一些重复次数不超过 k 次的整数的和的拆分数 等于 N拆分成不被 k+1 整除的数的和的拆分数
③ N拆分成k个数的和的拆分数 等于 N拆分成最大数为k的拆分数
④ N拆分成最多不超过k个数的和的拆分数 等于 N拆分成最大数不超过k的拆分数
⑤ N拆分成不超过k个数的和的拆分数 等于 N+k拆分成恰好k个数的拆分数
可重复的整数拆分
模版
k部分拆数
将 \(n\) 分成恰有 \(k\) 个部分的分拆,成为 \(k\) 部分拆数,记作 \(P(n,k)\) $$ P(n,k)=\sum_{j=0}^kP(n-k,j) $$
\[ P(n,k)=P(n-1,k-1)+P(n-k,k) \]
暴力递推 \(O(n*k)\)
互异拆分数
\(pd_n\) ,自然数 \(n\) 的各部分互不相同的分拆方法数。
暴力 \(O(\sqrt{n*k})\)
| C++ | |
|---|---|
奇拆分数
\(po_n\),自然数 \(n\) 各部分都是奇数的分拆方法数。 $$ po_n=pd_n $$ \(pde_n\),自然数 \(n\) 各部分都是偶数的互异分拆方法数。
\(pdo_n\),自然数 \(n\) 各部分都是奇数的互异分拆方法数。 $$ pd_n=pde_n+pdo_n $$