先上结论
求组合数时:
C
n
m
≡
C
n
m
o
d
p
m
m
o
d
p
∗
C
n
/
p
m
/
p
(
m
o
d
p
)
C_{n}^{m}\equiv C_{n\quad mod\quad p}^{m\quad mod \quad p}*C_{n / p}^{m/p}(mod\quad p)
Cnm≡Cnmodpmmodp∗Cn/pm/p(modp)
应用场景
卢卡斯定理一般用于大组合数取模问题,当m,n很大且可能为p的倍数时,快速幂不适用,且递推法复杂度过大,这时应用卢卡斯定理就可以给运算带来极大的方便。
证明:
首先证明:
(
1
+
x
)
p
=
1
+
x
p
(1+x)^p=1+x^p
(1+x)p=1+xp
按照二项式定理展开:
(
1
+
x
)
p
≡
C
p
0
1
+
C
p
1
x
1
+
C
p
2
x
2
+
…
…
C
p
p
x
p
≡
1
+
x
p
(
m
o
d
p
)
(1+x)^p\equiv C_{p}^{0}1+C_{p}^{1}x^1+C_{p}^{2}x^2+……C_{p}^{p}x^p\equiv1+x^p(mod\quad p)
(1+x)p≡Cp01+Cp1x1+Cp2x2+……Cppxp≡1+xp(modp)
因为除
C
p
0
和
C
p
p
外其余
C_{p}^{0}和C_{p}^{p}外其余
Cp0和Cpp外其余系数
C
p
1
,
C
p
2
,
C
p
3
…
…
,
C
p
p
−
1
C_{p}^{1},C_{p}^{2},C_{p}^{3}……,C_{p}^{p-1}
Cp1,Cp2,Cp3……,Cpp−1都被p除掉
接着:
令n=ap+b,m=cp+d;
对于
(
1
+
x
)
n
≡
C
n
0
1
+
C
n
1
x
1
…
…
+
C
n
n
x
n
(1+x)^n\equiv C_{n}^{0}1+C_{n}^{1}x^1……+C_{n}^{n}x^n
(1+x)n≡Cn01+Cn1x1……+Cnnxn……(1)
又
(
1
+
x
)
n
≡
(
1
+
x
)
a
p
+
b
≡
(
(
1
+
x
)
a
)
p
(
1
+
x
)
b
(1+x)^n\equiv (1+x)^{a p+b}\equiv((1+x)^a)^p (1+x)^b
(1+x)n≡(1+x)ap+b≡((1+x)a)p(1+x)b
≡
(
1
+
x
p
)
a
(
1
+
x
)
b
\equiv (1+x^p)^a(1+x)^b
≡(1+xp)a(1+x)b
≡
∑
0
a
C
a
i
x
p
i
×
∑
0
a
C
b
i
x
i
(
m
o
d
p
)
\equiv \sum_0^aC_{a}^{i}x^{pi}\times \sum_0^aC_{b}^{i}x^i(mod\quad p)
≡0∑aCaixpi×0∑aCbixi(modp)……(2)
在(1)中
X
m
X^m
Xm的系数为
C
n
m
C_{n}^{m}
Cnm
在(2)中
X
m
=
X
c
p
X
d
X^m=X^{cp}X^d
Xm=XcpXd的系数为
C
a
c
C
b
d
C_{a}^{c}C_{b}^{d}
CacCbd
故
C
n
m
≡
C
a
c
C
b
d
(
m
o
d
p
)
C_{n}^{m}\equiv C_{a}^{c}C_{b}^{d}(mod\quad p)
Cnm≡CacCbd(modp)
即
C
n
m
≡
C
n
m
o
d
p
m
m
o
d
p
∗
C
n
/
p
m
/
p
(
m
o
d
p
)
C_{n}^{m}\equiv C_{n\quad mod\quad p}^{m\quad mod \quad p}*C_{n / p}^{m/p}(mod\quad p)
Cnm≡Cnmodpmmodp∗Cn/pm/p(modp),证毕.