首页 > 其他分享 >组合数学

组合数学

时间:2025-01-22 21:43:08浏览次数:1  
标签:lfloor frac 组合 sum rfloor 数学 binom bmod

组合数学

组合数定义式

\(\binom{n}{m}=\frac{n!}{m!(n - m)!}\),表示 \(n\) 个数中选 \(m\) 个。

下降幂

\(n^{\underline{m}}=n(n - 1)(n - 2)\cdots(n - m + 1)\)

上升幂

\(n^{\overline{m}}=n(n + 1)(n + 2)\cdots(n + m - 1)\)

相关结论

  1. \(n^{\overline{m}}=(n + m - 1)^{\underline{m}}\),用于处理上升幂
  2. \(n^{\underline{m}}=(-1)^{m}(m - n - 1)^{\overline{m}}\),用于处理 \(n < 0\) 情况
  3. \(\binom{n}{m}=\frac{n^{\underline{m}}}{m!}\)

特殊情况

  • \(0^{0}=0!=x^{0}=1\)
  • 当 \(m>n\) 或 \(m<0\) 时,\(\binom{n}{m}=0\)
  • 当 \(m = 0\) 或 \(m=n\) 时,\(\binom{n}{0}=\binom{n}{n}=1\)

各种定理

1. 递推式(春游)

\(\binom{n}{k}=\binom{n - 1}{k}+\binom{n - 1}{k - 1}\)

2. 翻转

\(\binom{n}{k}=\binom{n}{n - k}\),条件:\(n>0\)

3. 吸收公式(用于处理常数或参数)

  • \(k\binom{n}{k}=n\binom{n - 1}{k - 1}\),用组合数定义展开证明
  • \(\frac{1}{k}\binom{n}{k}=\frac{1}{n}\binom{n - 1}{k - 1}\)
  • \((n - k)\binom{n}{k}=n\binom{n - 1}{k}\),用“春游”证明

4. 上指标反转

\(\binom{n}{k}=(-1)^{k}\binom{k - n - 1}{k}\),用下降幂性质证

5. 二项式定理

  • \((x + y)^{n}=\sum_{k = 0}^{n}\binom{n}{k}x^{k}y^{n - k}\)
  • 当 \(n\in\mathbb{R}\) 且 \(|x|<|y|\) 时,\((x + y)^{n}=\sum_{k = 0}^{+\infty}\binom{n}{k}x^{k}y^{n - k}\)(泰勒展开可证明)
  • 常用:
    • \((x + 1)^{n}=\sum_{k = 0}^{n}\binom{n}{k}x^{k}\)
    • \((x - 1)^{n}=\sum_{k = 0}^{n}(-1)^{n - k}\binom{n}{k}x^{k}\)
    • \(\binom{n}{k}\)是\((x + 1)^{n}\)的\(x^k\)项系数。这可以用来证明其他定理。(如lucas)

6.

  • \(\sum_{k = 0}^{n}\binom{n}{k}=2^{n}\),是二项式定理中 \(x = y = 1\) 的情况
  • 可用于有类似下指标求和的式子:\(\sum_{k = m}^{n}\binom{n}{k}=\sum_{k = 0}^{n}\binom{n}{k}-\sum_{k = 0}^{m - 1}\binom{n}{k}=2^{n}-2^{m}\)

7. 平行求和

\(\sum_{k = 0}^{m}\binom{n + k}{k}=\binom{n + m + 1}{m}\),右边用“春游”展开可证

8. 上指标求和

\(\sum_{k = 0}^{n}\binom{k}{m}=\binom{n + 1}{m + 1}\),用“春游”展开

9.

\(\sum_{k = 0}^{m}(-1)^{k}\binom{n}{k}=(-1)^{m}\binom{n - 1}{m}\)

10. 卷积

  • \(\sum_{k}\binom{r}{k}\binom{s}{n - k}=\binom{r + s}{n}\),从 \(r + s\) 个元素中选 \(n\) 个,等于从 \(r\) 中选 \(k\) 个,从 \(s\) 中选 \(n - k\) 个,\(k\in(0,n)\)
  • 该式用于处理大部分的 \(\sum\)
  • 变型:\(\sum_{k}\binom{-r}{m + k}\binom{-s}{n - k}(-1)^{k}=(-1)^{m + n}\binom{-r - s}{m + n}\)

11.

\(\binom{r}{m}\binom{m}{k}=\binom{r}{k}\binom{r - k}{m - k}\)

  • 用定义展开证明
  • 组合意义:从 \(r\) 中选 \(m\) 个,再从这 \(m\) 个中选 \(k\) 个,等价于先选 \(k\) 个要用的,再从 \(r - k\) 个中选 \(m - k\) 个陪衬的。

多项式系数

  • \(n\) 个不同的物品分成 \(m\) 组,第 \(i\) 组有 \(a_{i}\) 个,总方案数:\(\frac{n!}{\prod_{i = 1}^{m}a_{i}!}\)(\(\sum_{i = 1}^{m}a_{i}=n\)),可写作:\(\binom{n}{a_{1},a_{2},\cdots,a_{m}}\)
  • \(\binom{n}{a_{1},a_{2},\cdots,a_{m}}=\prod_{k = 1}^{m - 1}\binom{\sum_{i = k}^{k}a_{i}}{\sum_{i=k+1}a_{i}}\)

[注:上文是用AI把笔记的照片转文字的来的,可能会有错]

取模意义下的组合数

一些引理

  1. \(\binom{p}{n} \bmod p = [n = 0 \vee n = p]\),

    证明:\(\binom{p}{n}=\frac{p!}{n!(p - n)!}\),因为分子只有一个p,分母只有在n=p或n=0时有p。

  2. \[\begin{align} (a + b)^p &\equiv a^p + b^p \pmod{p}\\ 证明 :(a + b)^p &\equiv \sum_{n = 0}^{p} \binom{p}{n} a^{n}b^{p - n} \pmod{p}(二项式定理)\\ &\equiv a^p + b^p \pmod{p}(引理一) \end{align} \]

Lucas定理

一般来说,我们预处理阶乘,然后用定义式来计算组合数,但是当遇到n和m很大的时候,不支持\(O(n)\)的复杂度时,就要用到Lucas定理。

对于质数 \(p\),

\[\binom{n}{m} \bmod p = \binom{\lfloor n/p \rfloor}{\lfloor m/p \rfloor} \cdot \binom{n \bmod p}{m \bmod p} \bmod p \]

证明:
$\binom{n}{m} $ 是 \((x + 1)^n\) 的 \(x^m\) 项系数。

\[(x + 1)^n mod\ p = (x + 1)^{p\left \lfloor n/p \right \rfloor }(x + 1)^{n\ mod\ p} mod\ p\ \\ (通过引理二) = (x^p + 1)^{\left \lfloor n/p \right \rfloor }(x + 1)^{n\ mod\ p} mod\ p\ 的x^m项系数\\ \because m = \left \lfloor m/p \right \rfloor p + m \% p\\ \therefore \binom{n}{m} = \binom{\lfloor n/p \rfloor}{\lfloor m/p \rfloor} \cdot \binom{n \bmod p}{m \bmod p} mod\ p \]

拓展Lucas

用于处理模数M不是质数的情况。

\[M = p_1^{\alpha_1}\cdots p_m^{\alpha_m} \]

我们可以求出每一个 \(\binom{n}{m} \bmod p^{\alpha_i}\),然后CRT合并就行

我们吧n!,m!和\((n-m)!\)中,所有p的因子提出来,

会有形如 \(\frac{\frac{n!}{p^{x}}}{\frac{m!}{p^{y}}\frac{(n - m)!}{p^{z}}}p^{x - y - z}\bmod p^{\alpha}\)的式子。

现在分母可以exgcd求逆了,我们只需要求形如下面这样的式子:

\[\frac{n!}{p^{x}}\bmod p^{\alpha} \]

\[n!=p^{\lfloor \frac{n}{p}\rfloor}\cdot\left(\left\lfloor \frac{n}{p}\right\rfloor\right)!\cdot\left(\prod_{i,\gcd(i,p)=1}^{p^{\alpha}}i\right)^{\lfloor \frac{n}{p^{\alpha}}\rfloor}\cdot\left(\prod_{i,\gcd(i,p)=1}^{n\bmod p^{\alpha}}i\right) \]

前面两个是n中p的倍数,第三个是n对p的循环节,最后一个是n对p的余数。

因为要求的是n!扣掉p的因子对\(p^\alpha\)取模,所以把\(p^{\lfloor \frac{n}{p}\rfloor}\)直接扔掉,然后继续递归求解\(\left(\left\lfloor \frac{n}{p}\right\rfloor\right)!\)

感觉这玩意非常难写,而且好像用处不大。

标签:lfloor,frac,组合,sum,rfloor,数学,binom,bmod
From: https://www.cnblogs.com/water-flower/p/18686837

相关文章

  • 组合数及其简单应用
    定义组合数,也叫二次项系数,定义为\[C^m_n=\binomnm=\frac{n!}{m!(n-m)!}=\frac{n(n-1)\cdots(n-m+1)}{m!}\]下降幂:\(n\)的\(m\)次下降幂定义为$$n^\underlinem=n(n-1)\cdots(n-m+1)$$这样二项式系数就可以写为$$\binomnm=\frac{n^\underlinem}{m!}$$简单应用......
  • 组合计数与构造专题
    CF1824B2\(k\)为奇数时,注意到每次好点移动一格至少会增加$\lfloor\frac{k}{2}\rfloor+1-\lfloor\frac{k}{2}\rfloor$的长度,所以好点个数为\(1\)。\(k\)为偶数时,注意到好点一定在一条链上,我们计算出有多少条边\((u,v)\)满足\(u\)和\(v\)为好点,答案就是边数......
  • 组合数学
    组合数学基本概念\(a^{\underlinem}\)表示\(a\)的\(m\)次下降幂。\(a^{\overlinem}\)表示\(a\)的\(m\)次上升幂。推式子基本原理先把\(\sum\)移到最前面。将多个\(\sum\)排序,范围更小的放在前面。将只与当前\(\sum\)有关的式子尽量往前提。将能简化......
  • 前置数学
    一些必要trick推式子,先提\(\sum\)和\(\Pi\)到最前面,然后从后往前合并,必要时考虑更改\(\sum\)的取值看到次方变为斯特林数,\(x^n=\sum\limits_{i=0}^{n}{n\bracei}{x\choosei}i!=\sum\limits_{i=0}^{n}\sum\limits_{i=1}^m{(-1)^{m-i}\frac{i^n}{(m-i)!}}{x\choose......
  • 数学建模学习-朴素贝叶斯分类器(Naive Bayes Classifier)教程(31)
    数学建模学习-朴素贝叶斯分类器(NaiveBayesClassifier)教程(31)写在最前注意本文的相关代码及例子为同学们提供参考,借鉴相关结构,在这里举一些通俗易懂的例子,方便同学们根据实际情况修改代码,很多同学私信反映能否添加一些可视化,这里每篇教程都尽可能增加一些可视化方便同......
  • 6. 马科维茨资产组合模型+AI金融智能体(DeepSeek-V3)识别政策意图方案(理论+Python实战
    目录0.承前1.幻方量化&DeepSeek1.1Whatis幻方量化1.2WhatisDeepSeek2.重写AI金融智能体函数3.汇总代码4.反思4.1不足之处4.2提升思路5.启后0.承前本篇博文是对上一篇文章,链接:5.马科维茨资产组合模型+AI金融智能体(qwen-max)+政策信息优化方案......
  • 下降幂、斯特林数学习笔记
    下降幂注:这里其实还有上升幂。定义下降幂:\(x^\underline{k}=\prod\limits_{i=x-k+1}^xi=\frac{x!}{(x-k)!}\)上升幂:\(x^\overline{k}=\prod\limits_{i=x}^{x+k-1}i=\frac{(x+k-1)!}{(x-1)!}\)性质幂相加:\[n^\underline{a+b}=n^\underlinea(n-a)^\underlineb\]\[n^\overl......
  • 代码随想录:组合总和二
    这题说实话有点晕晕乎乎的,最后直接把代码随想录的代码复制过来了。要解决的问题是,尽管用了不同位置的相同元素,但是会产生相同的结果。解决方法是排序后,跳过相同元素。代码随想录那个used数组我属实没看懂,这个方法倒是看懂了。classSolution{private:vector<vector<int......
  • 代码随想录:组合总和
    回溯的本质就是多层for循环嵌套,用于解决不知道有多少层for循环的情况,适当剪枝其实也是for循环里增加限制条件classSolution{public:vector<int>sum;vector<vector<int>>res;vector<vector<int>>combinationSum(vector<int>&candidates,inttarget){......
  • 转:学习数学的进度?
    数学学到什么程度可以进行下一部分的学习了?只要你愿意承认前面有没学懂的东西,还能心平气和地回去学懂。(而这一点是很多人做不到的,这需要内心极其强大,以及无与伦比的耐心。)比如费曼(量子电动力学发明人之一,诺贝尔物理学奖得主)就是这样做的,转述一个在某本书里的描述,他看书就是......