【数论总结】

一、中国剩余定理

问题

求解线性同余方程组:
\(\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)\)(不论是否使用龟速乘)

二、欧拉定理

定理:

\(a^n\equiv \begin{cases}a^{n\bmod \phi(m)}&(a\bot m)\\a^n&(a\not \bot m,n<\phi(m))\\a^{n\bmod \phi(m)+\phi(m)}& (a\not \bot m,n\geq\phi(m))\end{cases}\pmod m\)

证明:

证明了解即可,其中\(a,m\)互质的情况用\(m\)的简化剩余系乘上\(a\)很容易证明,至于第三行的式子证明较为复杂,可以看这里

适用范围:

每个式子的适用范围一定要注意,\(a,m\)互质时,三个式子都成立;否则,当\(a<\phi(m)\)时,只有第二行成立,当\(a\geq \phi(m)\)时,只有第三行成立。(特别容易忽略

其他结论:

这里有个重要的结论,对一个数\(m\)不断进行操作\(m=\phi(m)\),显然m会不断变小直到\(1\),那么最多进行多少次操作,\(m\)一定降为\(1\)呢?答案是\(O(log m)\)次。

证明考虑分析m是否存在质因子2,若存在,则m至少减小到一半(考虑欧拉函数的公式);若不存在,进行一次操作后m一定含有质因子2(考虑欧拉函数的公式)。证毕。

三、BSGS(先只考虑求最小解)

用于求解离散对数问题:
\(a^x\equiv b\pmod m\)

  1. 弱化版:\(a\bot m\)
    由欧拉定理,可知\(a^x \equiv a^{x\bmod \phi(m)}\pmod m\),因此只需检验\(x\in [0,\phi(m)-1]\)的范围即可。
    但是实现中,检验\([0,\phi(m)-1]\)\([0,m]\)的复杂度基本相同,因此,为了方便,往往直接把检验范围拓展到\([0,m]\)
    做法考虑对检验范围(假设是\([0,m]\))分块,设\(n=\lfloor \sqrt{m}\rfloor\),

四、 Lucas

对于质数\(p\),设\(n=\sum\limits_{i=0}a_ip^i\),\(m=\sum\limits_{i=0}b_ip^i\),那么有:

\[\binom{n}{m}=\prod_{i=0}\binom{a_i}{b_i} \]

证明考虑构造一个关于\(x\)\(n\)次多项式\((1+x)^n\),容易发现其\(m\)次项系数即为\(\binom{n}{m}\)
也就是要求\([x^m](1+x)^n\pmod p\)
先证明一个引理:
\((1+x)^{p^k}\equiv 1+x^{p^k}\pmod p\)
先用二项式定理把\(p\)次方展开
\(\begin{aligned}(1+x)^{p^k}&\equiv (\sum_{i=0}^p\binom{p}{i}x^i)^{p^{k-1}}\\&\equiv (\sum_{i=0}^p\frac{p!}{i!(p-i)!}x^i)^{p^{k-1}}\\&\equiv (1+x^p)^{p^{k-1}}\\&\equiv (1+x^{p^k})\end{aligned}\)

posted @ 2022-06-29 17:23  glq_C  阅读(53)  评论(0)    收藏  举报