定义
若 p 为质数,且 1≤b≤a 则有:
Cba≡C⌊b/p⌋⌊a/p⌋×Cbmodpamoda(modp)
证明
证明 (1+x)p≡1+xp(modp)
设 x 是任意小于 p 的正整数,那么:
Cxp=p!x!(p−x)!=p(p−1)!x(x−1)!(p−x)!=pxCx−1p−1
由于 x<p 且 p 是质数,所以 x 一定存在模 p 意义下的逆元:
Cxp≡p⋅inv(x)⋅Cx−1p−1(modp)
显然等号右边是 p 的倍数,所以 Cxp≡0(modp)。
根据二项式定理有:(1+x)p=∑pi=0Cip≡1+xp(modp)。
证明核心
设:{⌊a/p⌋=qa⌊b/p⌋=qb,{amodp=rabmodp=rb,则有{a=qap+rab=qbp+rb。
由二项式定理 (1+x)a=∑ak=0Ckaxk,又有:
(1+x)a=(1+x)qap+ra=(1+x)qap⋅(1+x)ra≡(1+xp)qa⋅(1+x)ra=qa∑i=0Ciqaxip ⋅ ra∑j=0Cjraxj=qa∑i=0ra∑j=0CiqaCjraxip+j(modp)
我们枚举 k=ip+j 得:
(1+x)m≡a∑k=0C⌊k/p⌋qaCkmodpraxk(modp)a∑k=0Ckaxk≡a∑k=0C⌊k/p⌋qaCkmodpraxk(modp)
对比系数,并令 k=b,得:
Cbaxb≡C⌊b/p⌋qaCbmodpraxb(modp)Cba≡CqbqaCrbraxb(modp)
得证。
变形
我们把 a 和 b 拆分成 p 进制,k 为位数,ai,bi 分别为 a,b在二进制下的每一位,则有:
Cba≡k∏i=0Cbiai(modp)
本文作者:ASnown
本文链接:https://www.cnblogs.com/As-Snow/p/16954267.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步