Lucas定理,是用来快速求解一个组合数对于一个数(保证这一个数是质数)的模。
那么,我们先来看Lucas定理的求解式:
\(\binom{n}{m}\%p\)(\(p\)是质数)
这样的一个式子,在\(n,m\leq 10^9\)的时候很容易炸掉,那么我们就要对它利用\(p\)进行化简求值 。
那么,我们可以将\(n,m\)用另一种形式处理(可以考虑成将\(n,m\)用\(p\)进制表示)
\(n=n_k\cdot p^k + n_{k-1}\cdot p^{k-1} + \cdots + n_1\cdot p + n_0\)
\(m=m_k\cdot p^k + m_{k-1}\cdot p^{k-1} + \cdots + m_1\cdot p + m_0\)
那么,\(\binom{n}{m}\equiv\binom{n_k}{m_k}\binom{n_{k-1}}{m_{k-1}}\cdots\binom{n_0}{m_0}\ (mod\ p)\)
是不是看起来很累啊,我们换一种方法\(\binom{n}{m}\equiv\prod_{i=0}^{k}\binom{n_i}{m_i} \ (mod\ p)\)
(p是质数就不写了哈,反正所有的p都是质数)
我们接下来证明:(不喜欢看这一段的同学直接看代码啦)
令\(n=a\cdot p+b,m=c\cdot p+d\)
\(\therefore a=\left \lfloor \frac{n}{p} \right \rfloor,b=\left \lfloor \frac{m}{p} \right \rfloor\)
引理1:$(1+x)^p \equiv 1+x^p \pmod{p} $
证明:
$(1+x)^p \equiv 1+x \pmod{p} $
\(x^p \equiv x \pmod{p}\)
\(1+x^p \equiv 1+x \pmod{p}\)
\(\therefore (1+x)^p \equiv 1+x^p \pmod{p}\)
证毕
\((1+x)^n=(1+x)^{\left \lfloor \frac{n}{p} \right \rfloor \cdot p}\cdot (1+x)^b \equiv (1+x^p)^{\left \lfloor \frac{n}{p} \right \rfloor}\cdot (1+x)^b\)
此处引入二项式定理:\((1+x)^n=\sum_{i=0}^{n}\binom{n}{i}\cdot x^i\)
Lucas(卢卡斯)定理
猜你喜欢
转载自www.cnblogs.com/withhope/p/10385620.html
今日推荐
周排行