lucas定理及其拓展的推导

22 篇文章 0 订阅
9 篇文章 0 订阅

lucas定理及其拓展的推导

我的前一篇博客—— lucas定理 https://mp.csdn.net/mdeditor/100550317#主要是给出了lucas的结论和模板,不涉及推导。
本篇文章
主要侧重lucas定理及其拓展的公式推导
。先从 p w p^w pw的一般情况进行推导,最后令 w = 1 w=1 w=1进一步推导出了lucas定理的结论。可能会比较枯燥
想直接阅读结论的请转向这篇博客——拓展lucas结论及模板 https://blog.csdn.net/yuyilahanbao/article/details/100570075


( n m )   m o d   p w \tbinom{n}{m} \bmod p^w (mn)modpw的求取

p是素数。主要是计算 ( n m )   m o d   p w \tbinom{n}{m} \bmod p^w (mn)modpw的值。不想看推导过程的可以直接往下翻到下划线以后看结论。

对于 ( n m ) = n ! m ! ( n − m ) ! \tbinom{n}{m} = \frac{n!}{m!(n-m)!} (mn)=m!(nm)!n!.

对于 n ! = 1 × 2 × 3 × … × n . n!=1 \times 2 \times 3 \times \ldots \times n. n!=1×2×3××n.
我们将这些数进行分组。假设 k = ⌊ n p ⌋ ,   r = n   m o d   p ;    u = n p w ,   v = n   m o d   p w k=\lfloor \frac{n}{p} \rfloor,\, r = n \bmod p;\;u=\frac{n}{p^w},\, v=n \bmod {p^w} k=pn,r=nmodp;u=pwn,v=nmodpw

  1. 把所有p的倍数抽出来,组成一组,它们的乘积记为 A A A,易得 A = ∏ i = 1 k ( i × p ) = p w × k ! A=\prod\limits_{i=1}^{k}(i \times p)=p^w \times k! A=i=1k(i×p)=pw×k!

  2. 剩下的数中,把在这个区间内 [ u p w + 1 , u p w + v ] [up^w+1,up^w+v] [upw+1,upw+v]中的数分为一组,记乘积为 B B B.由于每个数都不是 p p p的倍数,则 B B B p w p^w pw互质, B B B关于 p w p^w pw的逆元 B p w − 1 B_{p^w}^{-1} Bpw1存在。

  3. 剩下的每个数a,把 ⌊ a p w ⌋ \lfloor \frac{a}{p^w} \rfloor pwa相同的数分在一组,并把 ⌊ a p w ⌋ \lfloor \frac{a}{p^w} \rfloor pwa作为它们的组号。每一组的乘积分别记作 C 0 , C 2 , C 3 , C 4 , … , C u − 1 C_0,C_2,C_3,C_4,\ldots,C_{u-1} C0,C2,C3,C4,,Cu1。同理,显然 C i C_i Ci p w p^w pw互质,逆元存在。另外,每一组的乘积关于 p w p^w pw是同模的,因为每一组的元素都是 [ p w i + 1 , p w ( i + 1 ) ) \left[p^wi+1,p^w(i+1)\right) [pwi+1,pw(i+1))的所有元素中去掉了 p p p的倍数。

于是 n ! = A B ∏ i = 0 u − 1 C i = p w × k ! × B ∏ i = 0 u − 1 C i n!=AB\prod\limits_{i=0}^{u-1}C_i=p^w\times k! \times B\prod\limits_{i=0}^{u-1}C_i n!=ABi=0u1Ci=pw×k!×Bi=0u1Ci.

回到原来组合数的问题,对于 n , m , n − m n,m,n-m n,m,nm依然有上面 k , r , u , v k,r,u,v k,r,u,v的定义,只是分别用下标 1 , 2 , 3 1,2,3 1,2,3区分。

于是 ( n m ) = n ! m ! ( n − m ) ! = p k 1 − k 2 − k 3 × k 1 ! × B 1 × ∏ i = 0 u 1 − 1 C i k 2 ! × k 3 ! × B 2 × B 3 × ∏ i = 0 u 2 − 1 C i × ∏ i = 0 u 3 − 1 C i \tbinom{n}{m} = \frac{n!}{m!(n-m)!} = \frac{p^{k_1-k_2-k_3}\times {k_1}! \times B_1 \times \prod\limits_{i=0}^{u_1-1}C_i}{{k_2}! \times {k_3}! \times B_2 \times B_3 \times \prod\limits_{i=0}^{u_2-1}C_i \times \prod\limits_{i=0}^{u_3-1}C_i} (mn)=m!(nm)!n!=k2!×k3!×B2×B3×i=0u21Ci×i=0u31Cipk1k2k3×k1!×B1×i=0u11Ci

注意到 k 1 − k 2 − k 3 ≥ 0 k_1-k_2-k_3 \geq 0 k1k2k30,事实上,它只能取0或1. B B B系列, C C C系列都是与 p w p^w pw互质的,而且 k 1 ! k 2 ! × k 3 ! \frac{{k_1}!}{{k_2}! \times {k_3}!} k2!×k3!k1!依旧是个整数,所以,可以直接把分母中 B B B, C C C系列中的直接变成乘以逆元抹去。

假设 B i ≡ b i ( m o d p w ) B_i \equiv b_i \pmod{p^w} Bibi(modpw), C i ≡ c ( m o d p w ) C_i \equiv c \pmod{p^w} Cic(modpw). b , c ∈ [ 1 , p w ) b,c \in \left[1,p^w\right) b,c[1,pw).
p k 1 − k 2 − k 3 × k 1 ! × B 1 × ∏ i = 0 u 1 − 1 C i k 2 ! × k 3 ! × B 2 × B 3 × ∏ i = 0 u 2 − 1 C i × ∏ i = 0 u 3 − 1 C i ≡ p k 1 − k 2 − k 3 × b 1 × b 2 − 1 × b 3 − 1 × c u 1 × ( c − 1 ) u 2 × ( c − 1 ) u 3 × k 1 ! k 2 ! × k 3 ! ≡ p k 1 − k 2 − k 3 × b 1 × b 2 − 1 × b 3 − 1 × c u 1 − u 2 − u 3 × k 1 ! k 2 ! × k 3 ! ( m o d p w ) \frac{p^{k_1-k_2-k_3}\times {k_1}! \times B_1 \times \prod\limits_{i=0}^{u_1-1}C_i}{{k_2}! \times {k_3}! \times B_2 \times B_3 \times \prod\limits_{i=0}^{u_2-1}C_i \times \prod\limits_{i=0}^{u_3-1}C_i} \\ \equiv { p^{k_1-k_2-k_3} \times b_1 \times {b_2}^{-1} \times {b_3}^{-1} \times c^{u_1} \times (c^{-1})^{u_2} \times (c^{-1})^{u_3} \times \frac{{k_1}!}{{k_2}! \times {k_3}!} }\\ \equiv { p^{k_1-k_2-k_3} \times b_1 \times {b_2}^{-1} \times {b_3}^{-1} \times c^{u_1-u_2-u_3} \times \frac{{k_1}!}{{k_2}! \times {k_3}!} } \pmod{p^w} k2!×k3!×B2×B3×i=0u21Ci×i=0u31Cipk1k2k3×k1!×B1×i=0u11Cipk1k2k3×b1×b21×b31×cu1×(c1)u2×(c1)u3×k2!×k3!k1!pk1k2k3×b1×b21×b31×cu1u2u3×k2!×k3!k1!(modpw).

  1. r 1 ≥ r 2 r_1 \geq r_2 r1r2时, k 1 = k 2 + k 3 k_1=k_2+k_3 k1=k2+k3,故上面这个式子最后分式的部分 k 1 ! k 2 ! × k 3 ! = ( k 1 k 2 ) \frac{{k_1}!}{{k_2}! \times {k_3}!}=\tbinom{k_1}{k_2} k2!×k3!k1!=(k2k1).

  2. 否则, k 1 = k 2 + k 3 + 1 k_1=k_2+k_3+1 k1=k2+k3+1,最后的那个分式无法直接变成组合数,但是我们只需要分子分母同时乘以 k 1 − k 2 k_1-k_2 k1k2,即可变成组合数。 k 1 ! k 2 ! × k 3 ! = ( k 1 − k 2 ) × ( k 1 k 2 ) \frac{{k_1}!}{{k_2}! \times {k_3}!}=(k_1-k_2) \times \tbinom{k_1}{k_2} k2!×k3!k1!=(k1k2)×(k2k1)


以上最后几行就是结论了,最后再次强调一下各个下标,字母代表的含义。

与n,m,n-m有关的量分别用下标1,2,3区分

k,r是除以 p p p的商与余数,u,v是除以模数 p w p^w pw的商与余数。

b是最后剩下的v个数中不是p的倍数的数的乘积

c是 [ 1 , p w ] \left[1,p^w\right] [1,pw]中不是p的倍数的数的乘积


从结论中的式子可以看到b,c我们只关注模 p k p^k pk意义下的值,因此可以预先求出 [ 1.. i ] [1..i] [1..i]中不是p的倍数的数的乘积 f ( i ) f(i) f(i)(模 p k p^k pk意义下的)。

lucas定理的推导

特殊地,当 w = 1 w=1 w=1时, k k k u u u, r r r v v v是相同的。
b ≡ r ! ( m o d p ) , c ≡ ( p − 1 ) ! ( m o d p ) b \equiv r! \pmod{p},\quad c \equiv (p-1)! \pmod{p} br!(modp),c(p1)!(modp),因此代入式子,可以得到lucas定理的结论。

  1. r 1 ≥ r 2 r_1 \geq r_2 r1r2时, k 1 = k 2 + k 3 k_1=k_2+k_3 k1=k2+k3,故上面最后的式子可以化为 a n s ≡ r 1 ! × ( r 2 ! ) − 1 × ( r 3 ! ) − 1 × ( k 1 k 2 ) ( m o d p ) ans \equiv { {r_1}! \times ({r_2}!)^{-1} \times ({r_3}!)^{-1} \times \tbinom{k_1}{k_2} \pmod{p} } ansr1!×(r2!)1×(r3!)1×(k2k1)(modp)

  2. 否则, k 1 = k 2 + k 3 + 1 k_1=k_2+k_3+1 k1=k2+k3+1,最后的那个分式无法直接变成组合数,但是我们只需要分子分母同时乘以 k 1 − k 2 k_1-k_2 k1k2,即可变成组合数。 k 1 ! k 2 ! × k 3 ! = ( k 1 − k 2 ) × ( k 1 k 2 ) \frac{{k_1}!}{{k_2}! \times {k_3}!}=(k_1-k_2) \times \tbinom{k_1}{k_2} k2!×k3!k1!=(k1k2)×(k2k1)。而 a n s ≡ p × r 1 ! × ( r 2 ! ) − 1 × ( r 3 ! ) − 1 × c × ( k 1 − k 2 ) × ( k 1 k 2 ) ≡ 0 ( m o d p ) ans \equiv { p \times {r_1}! \times ({r_2}!)^{-1} \times ({r_3}!)^{-1} \times c \times (k_1-k_2) \times \tbinom{k_1}{k_2} } \equiv 0 \pmod{p} ansp×r1!×(r2!)1×(r3!)1×c×(k1k2)×(k2k1)0(modp)

( n m )   m o d   N \tbinom{n}{m} \bmod N (mn)modN的求取

N是任意正整数。对 N N N进行素数分解。 N = ∏ i = 1 q p i k i N=\prod\limits_{i=1}^{q}p_i^{k_i} N=i=1qpiki.
( n m )   m o d   p i k i \tbinom{n}{m} \bmod p_i^{k_i} (mn)modpiki问题,可以通过上一小节的拓展lucas求得,记答案是 c i c_i ci.
于是得到了 q q q个线性同余方程,即线性同余方程组 ( n m ) ≡ c i ( m o d p i k i ) ( 1 ≤ i ≤ q ) \tbinom{n}{m} \equiv c_i \pmod{p_i^{k_i}} \quad (1 \leq i \leq q) (mn)ci(modpiki)(1iq).
对于线性同余方程组,并且注意到模数 p i k i p_i^{k_i} piki两两互质,可以用中国剩余定理(也可以用拓欧)解出其通解 x = x 0 + k t x=x_0+kt x=x0+kt。并且由于模数互质, k = l c m ( p i k i ) = N ( 1 ≤ i ≤ q ) k=lcm(p_i^{k_i})=N \quad (1 \leq i \leq q) k=lcm(piki)=N(1iq).所以在 [ 0 , N ) [0,N) [0,N)内只有一个特解 x 0 x_0 x0,而这个特解就是 ( n m )   m o d   N \tbinom{n}{m} \bmod N (mn)modN.
至此,组合数对任意数的取模我们都予以解决了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值