杂文:证明卢卡斯定理
符号
(nm)=n!m!(n−m)!,组合数
定理
众所周知的卢卡斯定理:
(nm)≡(nmodpmmodp)×(n/pm/p)(modp)
证明
一些很 trival 的引理
- (pi)≡0(modp),0<i<p
拆开它,等于:p!i!(p−i)!,然后 i! 和 (p−i)! 都不包含 p,所以无法消去分子中 p 的因数,于是整个分数就是 p 的倍数。
- (n+pm)≡(nm)(modp)
这玩意 =m∑i=0(ni)(pm−i)
考虑把 n+p 个物品分成 n 个,p 个,一共两组;枚举两组中选了多少个,拼起来
右边那玩意当且仅当 i=m 的时候能取到 1,其它时候都是 0,由引理 1
于是 i 只能取 m 式子就变成了 (nm)。
然后你会发现,如果 n≡n′(modp),那么 (nm)≡(n′m)(modp)。
- (a+b)p≡ap+bp(modp)
二项式定理拆开,由引理 1,中间项都是 0,只剩下两边 ap+bp
定理转化
首先发现这玩意相当于,把 n,m 写成 p 进制形式,设都是 k 位 (不足的补 0,即可让两数位数相同),设写出来 n={n1,n2...nk},m={m1,m2...mk},然后定理转化成:
(nm)≡k∏i=1(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
二方面,它
=n∑i=0(ni)xi
考虑 xcp+d 的系数。
一方面,它 =xcpxd=(xp)cxd,xcp=(xp)c 一项由左边 (xp+1)c 贡献,这样写很容易发现它的系数就是 (ac)。xd 就 trival 了,系数是 (bd)。那俩系数一拼,得这一项的系数为 (ac)(bd)
二方面,直接看,它等于 (ncp+d)=(ap+bcp+d)
由于两方面算的东西一样,所以有
(ac)(bd)=(ap+bcp+d)
然后就可以归纳证明卢卡斯定理了。
证毕。(手动黑框框qwq)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 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】