「不会」crt,excrt,lucas,exlucas

只是补一些其他人早就会的东西。
$$Chinese\ remainder\ theorem$$
用于解
$x\equiv a\mod M$
满足
$x\equiv a_1\mod m_1$
$x\equiv a_2\mod m_2$
$x\equiv a_3\mod m_3$
$\forall i,j,gcd(m_i,m_j)==1 \&\& \prod m_i=M$

因为互质可以知道一定有解
考虑构造一个可行解出来,例如对每个方程,给$x$加上一个数$y$
满足$y=k*\frac{M}{m_i}\&\&y\equiv a_i\mod m_i$
自然地想到$y=a_i*\frac{M}{m_i}*inv(\frac{M}{m_i},m_i)$

$$Ex\ Chinese\ remainder\ theorem$$
用于解

$x\equiv a\mod M$

满足

$x\equiv a_1\mod m_1$

$x\equiv a_2\mod m_2$

$x\equiv a_3\mod m_3$

$\exists i,j,gcd(m_i,m_j)>1 \&\& lcm(m_i)=M$

$m_i$不保证互质,不一定有解,而且只能知道$\mod lcm(m_i)$的准确值

考虑构造一个解出来,希望套用前面的做法但是此时不互质了可能不存在逆元

所以直接乘上$\prod m_i$除以$m_i$的做法不再可行,因为没有逆元可乘不能保证不影响结果在其他方程的余数

只能~~去颓别人的结论~~继续考虑一个一个方程地构造,假设目前得到了满足前$k-1$个方程的结果


网络上有写的很好的解同余方程组的解法,不(找)复(不)读(见)了,记一下自己的理解。

 

而我要保证前k-1个方程的结果不动,现在唯一能做的就是给$a_{k-1}$加上一堆$lcm_{i=1}^{k-1}(m_i)$的倍数来调整其$\mod m_k$的结果

就像当初疯狂向$x$累加$\frac{M}{m_i}$的倍数一样...

具体是多少倍,这应该参考每加一个$m'=lcm_{i=1}^{k-1}(m_i)$会造成什么影响

就是使结果增加$gcd(m',m_k)$吧。

那么需要加的东西就是$\frac{a_k-lastans}{gcd(m',m_k)}*m'$

注意这里若$(a_k-lastans)%gcd(m',m_k)>0$,则无解。

 


$$Lucas\ Theorem$$

求$C_n^m\mod p,p\in prime$,$n,m$很大

lucas发现了一个结论:

$\forall i\in[1,n-1],C_n^i\%n==0$等价于$n\in prime$

$n\in prime$时,左式显然成立

$n$是合数时,将$n$的质因子$p$代入

$C_n^p=\frac{n}{p}\frac{(n-1)!}{(n-p!(p-1)!}$

这个东西显然已经没有$p$这一因子了,不能被n整除。

 

这个有什么用?

不是要求组合数吗,组合数就是二项式系数,那就拆个二项式。

$\begin{aligned}\\(x+1)^p(mod p)&=\sum\limits_{i=0}^n C_n^i x^i(mod p)\\&=1+x^p(mod p)\\\end{aligned}$

想让等式左边变成$(x+1)^n$,于是把n写成p进制

$\begin{aligned}\\(x+1)^n&=\prod ((x+1)^{p^k})^{c_k}\\&=\prod (1+x^{p^k})^{c_k}\\\end{aligned}$

把m也写成p进制,那么得到了

$C_n^m=\prod C_{c_k}^{b_k}$

即是。

 

$$Ex\ Lucas\ Theorem$$

$Lucas Theorem$没啥关系了。

对于乱七八糟的合数$M$,拆成$\prod p^k$,这样可以用crt合并。

求$\mod p^k$的值,我们要保证把p的倍数和其他数分开,因为一旦乘到了0就不可逆了

所以要把分子分母的阶乘分开考虑,才能实现p的次数互消

一个简单的想法是只考虑阶乘中p的次数以及其余乘积$\mod p^k$的值

$p$的次数容易求出,在$\sum p^k$的复杂度可以接受的情况下,后者也容易求出

因为$\prod\limits_{i=1}^{p^k} [i%p!=0] i$和$\prod\limits_{i=p^k+1}^{2p^k} [i%p!=0] i$在$\mod p^k$是相等的

所以这种整段的直接快速幂,零碎的预处理,

至于$\prod [i%p==0] i$这一部分,把p这一因子提出来发现也成为了阶乘的形式,递归即可。

posted @ 2020-01-02 20:10  Yxsplayxs  阅读(178)  评论(2编辑  收藏  举报