杂文:证明卢卡斯定理

杂文:证明卢卡斯定理

符号

(nm)=n!m!(nm)!,组合数

定理

众所周知的卢卡斯定理:

(nm)(nmodpmmodp)×(n/pm/p)(modp)

证明

一些很 trival 的引理

  1. (pi)0(modp),0<i<p

拆开它,等于:p!i!(pi)!,然后 i!(pi)! 都不包含 p,所以无法消去分子中 p 的因数,于是整个分数就是 p 的倍数。

  1. (n+pm)(nm)(modp)

这玩意 =i=0m(ni)(pmi)

考虑把 n+p 个物品分成 n 个,p 个,一共两组;枚举两组中选了多少个,拼起来

右边那玩意当且仅当 i=m 的时候能取到 1,其它时候都是 0,由引理 1

于是 i 只能取 m 式子就变成了 (nm)

然后你会发现,如果 nn(modp),那么 (nm)(nm)(modp)

  1. (a+b)pap+bp(modp)

二项式定理拆开,由引理 1,中间项都是 0,只剩下两边 ap+bp

定理转化

首先发现这玩意相当于,把 n,m 写成 p 进制形式,设都是 k 位 (不足的补 0,即可让两数位数相同),设写出来 n={n1,n2...nk},m={m1,m2...mk},然后定理转化成:

(nm)i=1k(nimi)(modp)

然后只要证明

(ap+bcp+d)(ac)(bd)(modp)

即可归纳证明卢卡斯定理

小结论的证明

n=ap+b,m=cp+d

考虑生成函数:(x+1)n

一方面,它

=(x+1)ap(x+1)b((x+1)p)a(x+1)b(xp+1)a(x+1)b

二方面,它

=i=0n(ni)xi

考虑 xcp+d 的系数。

一方面,它 =xcpxd=(xp)cxdxcp=(xp)c 一项由左边 (xp+1)c 贡献,这样写很容易发现它的系数就是 (ac)xd 就 trival 了,系数是 (bd)。那俩系数一拼,得这一项的系数为 (ac)(bd)

二方面,直接看,它等于 (ncp+d)=(ap+bcp+d)

由于两方面算的东西一样,所以有

(ac)(bd)=(ap+bcp+d)

然后就可以归纳证明卢卡斯定理了。

证毕。(手动黑框框qwq)

posted @   Flandre-Zhu  阅读(119)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示