首页 > 其他分享 >Lucas 定理

Lucas 定理

时间:2024-02-01 22:11:09浏览次数:31  
标签:Lucas pmod sum cdots binom prod 定理 equiv

Lucas 定理,一般用于求某组合数对某质数取模的值,即 \(\binom{n}{m} \bmod p\)。

一般来说,这种东西有一堆求法。\(n, m\) 小的话可以直接递推,\(p > n\) 可以根据定义 \(\binom{n}{m} = \frac{n!}{m!(n-m)!}\) 预处理阶乘和阶乘的逆元求。但是如果 \(p \le n\),阁下又当如何应对?此时你不能保证 \(n\) 和 \(n - m\) 模 \(p\) 的逆元存在。于是我们使用—— Lucas 定理。

Lucas 定理

\(\binom{n}{m} \equiv \prod\limits_{i = 0}^x \binom{n_i}{m_i} \pmod p\),其中 \(n_i, m_i\) 分别为 \(n, m\) 在 \(p\) 进制下的各位数字,即 \(n = \sum\limits_{i = 0}^xn_ip^i\),\(m = \sum\limits_{i = 0}^xm_ip^i\)。

这样我们就可以递归地在 \(\log_p\) 的时间复杂度内求出答案了。代码也很好写:

int CC(int n, int m) { return (n < m ? 0 : fac[n] * ifac[m] % P * ifac[n - m] % P); }
int C(int n, int m) { return (n == 0 ? 1 : C(n / P, m / P) * CC(n % P, m % P) % P); }

需要预处理 \(p\) 以内的阶乘及其逆元。这个肯定是存在的。

接下来我们尝试证明 Lucas 定理。

证明

引理 1

若 \(p\) 为质数且 \(1 \le k < p\),则 \(\binom{p}{k} \equiv 0 \pmod p\)。

根据定义,\(\binom{p}{k} = \frac{p!}{k!(p - k)!} = \frac{p(p - 1)(p - 2) \cdots (p - k + 1)}{k!}\)。我们知道 \(\binom{p}{k}\) 肯定是个整数,所以 \(k! | p(p - 1)(p - 2) \cdots (p - k + 1)\)。又因为 \(p\) 是个质数,而 \(k < p\),所以 \(1 \cdots k\) 中一定没有 \(p\) 的因子,所以 \(k!\) 一定与 \(p\) 互质。所以 \(k! | (p - 1)(p - 2) \cdots (p - k + 1)\),即 \(\frac{(p - 1)(p - 2) \cdots (p - k + 1)}{k!}\) 肯定是个整数。发现没?这里少了个 \(p\)。那说明 \(p\) 肯定就是 \(\binom{p}{k}\) 的一个因数,即 \(\binom{p}{k} \equiv 0 \pmod p\)。

引理 2

若 \(p\) 为质数,则 \((1 + x)^p \equiv 1 + x^p \pmod p\)。

有了上一个引理的铺垫,这个证起来就很简单了。根据二项式定理,我们有 \((1 + x)^p = \sum\limits_{i = 0}^p\binom{p}{i}x^i\)。根据引理 \(1\),我们有 \(\binom{p}{i} \equiv 0 \pmod p (1 \le i < p)\),也就是当 \(1 \le i < p\) 时,\(\binom{p}{i}x^i \equiv 0 \pmod p\)。所以 \((1 + x)^p \equiv \binom{p}{0}x^0 + \binom{p}{p}x^p = 1 + x^p \pmod p\)。

引理 3

若 \(p\) 为质数,则 \((1 + x)^{p^i} \equiv 1 + x^{p^i} \pmod p\)。

我们考虑将 \(p^i\) 里面的 \(p\) 一个个地“搬”到括号里。即 \((1 + x)^{p^i} = ((1 + x)^p)^{p^{i - 1}} \equiv (1 + x^p)^{p^{i - 1}} \pmod p\)。然后将 \(x^p\) 视为新的 \(x\),再进行如上的操作,得到 \((1 + x^{p^2})^{p^{i - 2}}\),以此类推,直到括号外 \(p\) 变为 \(0\) 次为止。这样就可以得到 \((1 + x)^{p^i} \equiv 1 + x^{p^i} \pmod p\)。

接下来我们开始证明 Lucas 定理。

考虑一个式子 \(\sum\limits_{K = 0}^N\binom{N}{K}X^K\)。我们接下来对它进行变形。

\[\begin {equation} \begin {split} \sum_{K = 0}^N\binom{N}{K}X^K &= (1 + X)^N,这是二项式定理;\\ &接下来我们将 N 按 P 进制展开,得到 \\ &= (1 + X)^{\sum_{i = 0}^{x}n_iP^i} \\ &我们知道 a^{(b + c)} = a^b·a^c,所以 \\ &= \prod_{i = 0}^x(1 + X)^{n_iP^i} \\ &= \prod_{i = 0}^x((1 + X)^{P^i})^{n_i} \\ &使用引理 3,我们得到 \\ &= \prod_{i = 0}^x(1 + X^{P^i})^{n_i} \\ &我们令 Y_i = X^{P^i},再使用二项式定理,得 \\ &= \prod_{i = 0}^x(\sum_{j = 0}^{n_i}\binom{n_i}{j}Y_i^j) \\ &我们知道当 n < m 时 \binom{n}{m} = 0。而且由于 n_i 是 N 的 P 进制表示的各数位,所以必有 n_i \le P - 1 \\ &因此我们可以直接将内层求和的上界变为 P - 1,因为多出来的那些项的值都为 0。所以 \\ &= \prod_{i = 0}^x(\sum_{j = 0}^{P - 1}\binom{n_i}{j}Y_i^j) \\ &接下来是整个过程中最关键的一步,也是最难理解的一步(? \\ &我们观察到此时的式子是一堆东西求和然后乘起来,类似于 (a_1 + a_2 + \cdots)(b_1 + b_2 + \cdots)\cdots \\ &考虑把它用乘法分配律展开,变成一堆东西乘起来然后求和的形式。\\ &如果令 f_{i, j} = \binom{n_i}{j}Y_i^j,那我们可以看出实际上 \\ &= (f_{0, 0} + f_{0, 1} + \cdots + f_{0, P - 1})(f_{1, 0} + f_{1, 1} + \cdots + f_{1, P - 1})\cdots(f_{x, 0} + f_{x, 1} + \cdots + f_{x, P - 1}) \\ &展开之后变成 \\ &= f_{0, 0}f_{1, 0}\cdots f_{x, 0} + f_{0, 0}f_{1, 0}\cdots f_{x - 1, 0}f_{x, 1} + \cdots + f_{0, P - 1}f_{1, P - 1}\cdots f_{x, P - 1} \\ &如果令 A 为 0 到 P - 1 之间(含两端)所有整数构成的集合,则 \\ &= \sum_{j_0, j_1, \cdots j_x \in A}\prod_{i = 0}^xf_{i, j_i} \\ &= \sum_{j_0, j_1, \cdots j_x \in A}\prod_{i = 0}^x\binom{n_i}{j_i}Y_i^{j_i} \\ &将 X_i 代回,得 \\ &= \sum_{j_0, j_1, \cdots j_x \in A}\prod_{i = 0}^x\binom{n_i}{j_i}(X^{P^i})^{j_i} \\ &根据 \prod ab = \prod a\prod b,我们有 \\ &= \sum_{j_0, j_1, \cdots j_x \in A}\prod_{i = 0}^x\binom{n_i}{j_i}\prod_{i = 0}^xX^{j_iP^i} \\ &根据 a^b·a^c=a^{b+c},我们有 \\ &= \sum_{j_0, j_1, \cdots j_x \in A}\prod_{i = 0}^x\binom{n_i}{j_i}X^{\sum_{j = 0}^xj_iP^i} \\ &接下来一步非常巧妙。我们观察到 X 的指数,发现这很像一个 P 进制数的形式,而所有 j_i 就是这个 P 进制数的数位。\\ &基于此,我们发现外层求和枚举所有 j_0 到 j_x,实际上是在枚举所有 x 位的 P 进制数。\\ &于是我们干脆就把所有 j 连到一起看作一个 P 进制数,并且令它的值为 K。再令 M 为所有 x 位 P 进制数中最大的。这样,我们得到 \\ &= \sum_{K = 0}^M\prod_{i = 0}^x\binom{n_i}{j_i}X^K \\ &进一步思考,我们会发现此处外层求和的上界可以直接改成 N。\\ &因为如果 K > N,考虑到 n_i 和 j_i 分别为 N 和 K 的 P 进制表示,则必然有至少一个 i 使得 n_i < j_i,\\ &从而 \binom{n_i}{j_i} 就会为 0,进而导致整个这个 K 的求和项都变成 0。所以这样的 K 不必再算。\\ &于是,我们得到了最后一个式子:\\ &= \sum_{K = 0}^N\prod_{i = 0}^x\binom{n_i}{j_i}X^K \pmod P。 \end {split} \end {equation} \]

对比最后一个式子和第一个式子,即 \(\sum\limits_{K = 0}^N\binom{N}{K}X^K \equiv \sum\limits_{K = 0}^N\prod\limits_{i = 0}^x\binom{n_i}{j_i}X^K \pmod P\)。由于两边模 \(P\) 是等价的,所以相同次数的 \(X\) 应当拥有(在模 \(P\) 意义下)相同的系数。所以 \(\binom{N}{K} \equiv \prod\limits_{i = 0}^x\binom{n_i}{j_i} \pmod P\)。证毕。

标签:Lucas,pmod,sum,cdots,binom,prod,定理,equiv
From: https://www.cnblogs.com/forgotmyhandle/p/18000113

相关文章

  • 二项式定理
    二项式定理观察下列各式及其展开式\[(x+y)^2=x^2+2xy+y^2\]\[(x+y)^3=x^3+3x^2y+3yx^2+y^3\]\[(x+y)^4=x^4+4x^3y+6x^2y^2+4xy^3+y^4\]\[\cdots\cdots\]杨辉三角\[1\]\[1\quad1\]\[1\quad2\quad1\]\[1\quad3\quad3\quad1\]\[\cdots\quad......
  • Cayley-Hamilton 定理学习笔记
    CH定理主要用于优化线性递推。下面很多东西都是自己瞎琢磨的,大概错漏挺多。线代的一些基本知识感觉学习CH困难的很大一部分原因就是缺少一些线代的基础。矩阵的秩\(r(A)<n\),说明向量组线性相关,说明行列式\(|A|=0\)。反之,如果\(|A|\neq0\),那么矩阵满秩。即二者充要。......
  • 基于光流法的车辆检测计数算法matlab仿真,对比Horn-Schunck光流和Lucas-Kanade光流
    1.算法运行效果图预览HS光流 LK光流  2.算法运行软件版本matlab2022a 3.算法理论概述      光流法是一种用于估计图像中像素或特征点运动的方法。在车辆检测与计数应用中,光流法可用于检测图像中车辆的运动,从而进行计数。这里我们将详细介绍Horn-Schunc......
  • 矩阵代数的 Burnside 定理
    我们详细重述并证明[1,Sec.1.2]中的Burnside定理及其相关推论.下面设V是复数域C上的有限维线性空间,B(V)是V上的线性变换代数;I是B(V)的单位元.Burnside定理证明较长.为使逻辑顺畅,先做一些准备工作.Lemma1设A是B(V)上的乘法半群,若A不可约,则对任意非零的x......
  • 欧拉定理学习笔记
    费马小定理\(a,p\in\mathbb{Z_+}\),\(p\)为质数,\(\gcd(a,p)=1\)。定理:\(a^{p-1}\equiv1\pmodp\)。证明:考虑下面两个整数集合:\[A=\{x\in\mathbb{Z_+}|1\lex<p\}\]\[B=\{y\in\mathbb{Z_+}|y=ax,x\inA\}\]\(A\)中很明显每个数对\(p\)取余各不相同......
  • 霍尔定理
    霍尔定理前置芝士/约定:应用在二分图匹配中,设当前二分图的两部为\(A,B\)部。现在任意从\(A\)中选出一个子集\(S\),并且把所有\(S\)中的点连接的,\(B\)部中的点放进集合\(T\)。完美匹配指\(A\)中的所有点都可以被匹配。参考博客(带证明)定理1若对于\(\forall......
  • 威尔逊定理
    前言一个抽象的事情,我在证欧拉定理的时候,偶然发现了一个式子:\[(p-1)!\bmodp=p-1\]非常的偶然,实际上是证明欧拉定理的时候有一步搞错了,然后不得不想如何把\((p-1)!\bmodp\)消去,然后就很意外的发现了这个式子。当时我不知道他到底是不是成立的,我试了好几个数都是满足的,于是......
  • E - Ring MST(n个数裴蜀定理)
    E-RingMST有i种操作,第i种操作为选择一个数x,然后在x和(x+a[i])%N之间连边,代价为c[i],问是否能够让图联通,如果可以最小生成树的边权和是多少。首先按照克鲁斯卡尔算法,我们肯定是按照边权从小到大连。考虑前i种操作都操作完后的连通块个数。若u,v在同一联通块,则\(u\equivv+a......
  • 多面体欧拉定理的证明
    定理内容对于任何一个凸多面体,记它有\(v\)个顶点,\(f\)个面和\(e\)条棱,那么满足以下关系:$$f+v-e=2$$定理证明基本思路用两种不同的方法计算并用\(f,v,e\)表示出这个凸面体所有面上的内角和,再列出等式化简得到最终结果。(角度上标均省略)方法一:直接利用公式计算因为共有......
  • 主定理
    定义主定理(MasterTheorem)通常是指在算法分析领域中的一个定理,特别是用于分析递归算法的时间复杂度。时间复杂度相关定义在计算机科学中,算法的时间复杂度(timecomplexity)是一个函数,它定性描述该算法的运行时间。其原理在于,将计算机的每种基本运算(如加减乘除)所需的时间视为常数,......