lucas定理及其拓展的推导

lucas定理及其拓展的推导

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


(nm) mod pw\tbinom{n}{m} \bmod p^w的求取

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

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

对于n!=1×2×3××n.n!=1 \times 2 \times 3 \times \ldots \times n.
我们将这些数进行分组。假设k=np, r=n mod p;  u=npw, v=n mod pwk=\lfloor \frac{n}{p} \rfloor,\, r = n \bmod p;\;u=\frac{n}{p^w},\, v=n \bmod {p^w}

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

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

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

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

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

于是(nm)=n!m!(nm)!=pk1k2k3×k1!×B1×i=0u11Cik2!×k3!×B2×B3×i=0u21Ci×i=0u31Ci\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}

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

假设Bibi(modpw)B_i \equiv b_i \pmod{p^w},Cic(modpw)C_i \equiv c \pmod{p^w}.b,c[1,pw)b,c \in \left[1,p^w\right).
pk1k2k3×k1!×B1×i=0u11Cik2!×k3!×B2×B3×i=0u21Ci×i=0u31Cipk1k2k3×b1×b21×b31×cu1×(c1)u2×(c1)u3×k1!k2!×k3!pk1k2k3×b1×b21×b31×cu1u2u3×k1!k2!×k3!(modpw)\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}.

  1. r1r2r_1 \geq r_2时,k1=k2+k3k_1=k_2+k_3,故上面这个式子最后分式的部分k1!k2!×k3!=(k1k2)\frac{{k_1}!}{{k_2}! \times {k_3}!}=\tbinom{k_1}{k_2}.

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


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

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

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

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

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


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

lucas定理的推导

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

  1. r1r2r_1 \geq r_2时,k1=k2+k3k_1=k_2+k_3,故上面最后的式子可以化为ansr1!×(r2!)1×(r3!)1×(k1k2)(modp)ans \equiv { {r_1}! \times ({r_2}!)^{-1} \times ({r_3}!)^{-1} \times \tbinom{k_1}{k_2} \pmod{p} }

  2. 否则,k1=k2+k3+1k_1=k_2+k_3+1,最后的那个分式无法直接变成组合数,但是我们只需要分子分母同时乘以k1k2k_1-k_2,即可变成组合数。k1!k2!×k3!=(k1k2)×(k1k2)\frac{{k_1}!}{{k_2}! \times {k_3}!}=(k_1-k_2) \times \tbinom{k_1}{k_2}。而ansp×r1!×(r2!)1×(r3!)1×c×(k1k2)×(k1k2)0(modp)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}

(nm) mod N\tbinom{n}{m} \bmod N的求取

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

posted @ 2019-09-05 22:06  我云知世就是力量  阅读(243)  评论(0)    收藏  举报