「不会」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$说,让我来!~~

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)^n(\mod p)&=\sum\limits_{i=0}^n C_n^i x^i(\mod p)\\&=1+x^p(\mod p)\\\end{aligned}$

猜你喜欢

转载自www.cnblogs.com/yxsplayxs/p/12141788.html