卢卡斯定理
概述:
定理是用来求C(n,m) mod p的值。其中:n和m是非负整数,p是素数。一般用于m,n很大而p很小,或者n,m不大但大于怕、,这样用阶乘就解决不了问题。
结论:
L
u
c
a
s
(
n
,
m
,
p
)
=
C
n
%
p
m
%
p
∗
L
u
c
a
s
(
n
/
p
,
m
/
p
,
p
)
%
p
Lucas(n,m,p)=C_n\%p^m\%p*Lucas(n/p,m/p,p)\%p
Lucas(n,m,p)=Cn%pm%p∗Lucas(n/p,m/p,p)%p
L
u
c
a
s
(
x
,
0
,
p
)
=
=
0
,
C
a
b
=
a
!
∗
(
b
!
(
a
−
b
)
!
)
p
−
2
m
o
d
p
Lucas(x,0,p)==0,C_a^b=a!*(b!(a-b)!)^{p-2}modp
Lucas(x,0,p)==0,Cab=a!∗(b!(a−b)!)p−2modp
其实就是相当与将n写成p进制数每一位求组合数,再进行相乘