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!(n−m)!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
-
把所有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=1∏k(i×p)=pw×k!。
-
剩下的数中,把在这个区间内 [ 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} Bpw−1存在。
-
剩下的每个数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,…,Cu−1。同理,显然 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=0∏u−1Ci=pw×k!×Bi=0∏u−1Ci.
回到原来组合数的问题,对于 n , m , n − m n,m,n-m n,m,n−m依然有上面 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!(n−m)!n!=k2!×k3!×B2×B3×i=0∏u2−1Ci×i=0∏u3−1Cipk1−k2−k3×k1!×B1×i=0∏u1−1Ci
注意到 k 1 − k 2 − k 3 ≥ 0 k_1-k_2-k_3 \geq 0 k1−k2−k3≥0,事实上,它只能取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}
Bi≡bi(modpw),
C
i
≡
c
(
m
o
d
p
w
)
C_i \equiv c \pmod{p^w}
Ci≡c(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=0∏u2−1Ci×i=0∏u3−1Cipk1−k2−k3×k1!×B1×i=0∏u1−1Ci≡pk1−k2−k3×b1×b2−1×b3−1×cu1×(c−1)u2×(c−1)u3×k2!×k3!k1!≡pk1−k2−k3×b1×b2−1×b3−1×cu1−u2−u3×k2!×k3!k1!(modpw).
-
当 r 1 ≥ r 2 r_1 \geq r_2 r1≥r2时, 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).
-
否则, 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 k1−k2,即可变成组合数。 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!=(k1−k2)×(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}
b≡r!(modp),c≡(p−1)!(modp),因此代入式子,可以得到lucas定理的结论。
-
当 r 1 ≥ r 2 r_1 \geq r_2 r1≥r2时, 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} } ans≡r1!×(r2!)−1×(r3!)−1×(k2k1)(modp)
-
否则, 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 k1−k2,即可变成组合数。 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!=(k1−k2)×(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} ans≡p×r1!×(r2!)−1×(r3!)−1×c×(k1−k2)×(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=1∏qpiki.
对
(
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)(1≤i≤q).
对于线性同余方程组,并且注意到模数
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(1≤i≤q).所以在
[
0
,
N
)
[0,N)
[0,N)内只有一个特解
x
0
x_0
x0,而这个特解就是
(
n
m
)
 
m
o
d
 
N
\tbinom{n}{m} \bmod N
(mn)modN.
至此,组合数对任意数的取模我们都予以解决了。