其他分享
首页 > 其他分享> > 【数论总结】

【数论总结】

作者:互联网

一、中国剩余定理

问题

求解线性同余方程组:
\(\begin{cases} x\equiv a_1\pmod {m_1}\\x\equiv a_2\pmod{ m_2}\\ \dots\\x\equiv a_n\pmod {m_n} \end{cases}\)

  1. 弱化版(保证\(m_i\)两两互质)
    可以证明此时一定有解,且可以构造出一个解\(x_0\),那么通解显然为\(x\equiv x_0\pmod {\operatorname{lcm}\limits_{i=1}^nm_i}\)。
    在模数互质的情况下容易构造出\(x_0\),设\(M_i=\frac{\prod\limits_{i=1}^nm_i}{m_i}\),\(M_iM_i^{-1}\equiv 1\pmod {m_i}\),则\(x_0=\sum\limits_{i=1}^na_iM_iM_i^{-1}\)
    实现时,先把模数都乘起来,枚举1~n,求出每个\(M_i\)在\(m_i\)下的逆元(用exgcd),同时按照式子一边累加,一边对所有模数的乘积(在模数两两互质时,所有模数的乘积即为所有模数的lcm)取模即可。
    需要注意,所有模数的乘积可能很大,因此在求\(a_iM_iM_i^{-1}\)时可能要使用龟速乘。
    复杂度\(O(nlog w)\)(不论是否使用龟速乘)
  2. 拓展中国剩余定理(不保证\(m_i\)两两互质)
    因为模数不再保证互质,因此\(M_i\)和\(m_i\)不一定互质,就无法求得\(M_i\)的逆元,所以我们换一种思路:考虑合并两个形如\(x\equiv a_1\pmod {m_1}\),\(x\equiv a_2\pmod {m_2}\)的式子。
    那么有\(x=a_1+k_1m_1=a_2-k_2m_2\),即\(k_1m_1+k_2m_2=a_2-a_1\),若\(gcd(m_1,m_2)\not |(a_2-a_1)\),则方程一定无解,否则,可以用exgcd求出一组\((k_1,k_2)\),那么合并后的方程即为\(x=a_1+k_1m_1\pmod{lcm(m_1,m_2)}\)
    实现时,枚举2~n,同时维护一个\(a_1,m_1\),把当前枚举的\(a_i,m_i\)作为推到中的\(a_2,m_2\)即可。与弱化版相同需要注意是否需要使用龟速乘。复杂度同样为\(O(nlog w)\)(不论是否使用龟速乘)

二、BSGS算法

标签:总结,龟速,模数,数论,pmod,iM,互质,equiv
来源: https://www.cnblogs.com/glq-Blog/p/16424271.html