首页 > 其他分享 >同余进阶

同余进阶

时间:2023-01-15 10:44:26浏览次数:54  
标签:进阶 pmod sq varphi times mod 同余 equiv

扩展欧拉定理

\[a^b\equiv \begin{cases} a^{b \bmod \varphi(m)} & (a,m)=1\\ a^b & (a,m)\neq 1,b<\varphi(m)\\ a^{b\bmod\varphi(m)+\varphi(m)} & (a,m)\neq 1,\,b\geqslant \varphi(m) \end{cases} \pmod{m} \]

  • 应当注意不能认为总是有 \(a^b\equiv a^{b\bmod\varphi(m)+\varphi(m)} \pmod{m}\),这在第二种情况下可能不对,因为不能保证 \(a^{\varphi(m)}\equiv 1 \pmod{m}\)。

  • 证明如下:

  1. 对于 \(a^0,a^1,\dots ,a^{+\infty}\pmod{m}\),存在 \(r,s\),使得 \(a^0\sim a^{r-1}\) 互不相同,从 \(a^r\) 开始每 \(s\) 个数循环一次。

    • 因为 \(\pmod{m}\) 的数集是有限集,故互不相同的 \(a^k\) 是有限的,\(r\) 存在。

    • 由鸽笼原理,一定存在 \(k>k'\),使得 \(a^k\equiv a^{k'}\),于是显然循环。

  2. \(a\in prime\) 时,该式成立。

    • 若 \(a\perp m\),为欧拉定理的简单情况。

    • 否则,存在 \(t\),使得 \(m=a^tm'\),且 \(a\perp m'\),从而 \(a^{\varphi(m')}\equiv 1\pmod{m'}\)。

    • 由欧拉函数的积性,有 \(m'\mid m\to \varphi(m')\mid \varphi(m)\),于是 \(a^{\varphi(m)}\equiv 1\pmod{m'}\)。

    • 转为不定方程,\(a^{\varphi(m)}=km'+1\),再在两边同乘 \(a^t\),得到 \(a^{t+\varphi(m)}=km+a^t\)。

    • 转回同余式,得到 \(a^t\equiv a^{t+\varphi(m)}\)。利用欧拉函数的积性,有

    \[\varphi(m)\geqslant \varphi(a^t)=a^{t-1}(a-1) \]

    • 注意到 \(a\geqslant 2,t\geqslant 1\),故

    \[\varphi(m)\geqslant a^{t-1}(a-1)\geqslant t \]

    • 其中 \(a^{t-1}(a-1)=t\) 只在 \(a=2,t=1\) 时取得。

    • 所以对于 \(a>2\) 或 \(t>1\),有 \(a^t\equiv a^{t+\varphi(m)}\equiv a^{t\bmod m+\varphi(m)}\)。

    • 对于 \(a=2 \And t=1\),手动验证发现总有 \(t=1\leqslant \varphi(m)\),\(<\) 时走第二种情况,\(=\) 时显然有 \(2^1=2^{1\bmod 1+1}\)。

    • 故该式在 \(a\in prime\) 时成立。

  3. \(a\in p^k,p\in prime\) 时,该式成立。

    • 累了。
  • 应用:光速幂。

    • 扩展欧拉定理告诉我们,在 \(\pmod m\) 意义下,一切幂的次数都在 \([0,2\varphi(m))\) 中。

    • \(2\varphi(m)\) 还是有点大,考虑使用幂的性质,取 \(sq=\lceil\sqrt{\varphi(m)}\rceil\),于是

    \[a^b\equiv a^{\lfloor\frac{b}{sq}\rfloor sq+b\bmod sq}\equiv (a^{\lfloor\frac{b}{sq}\rfloor})^{sq}a^{b\bmod sq} \]

    • 则可以 \(O(\sqrt{m})-O(1)\) 地求固定底数的幂。一般化地,应当是 \(O(m^{\frac{1}{k}})-O(\log_{m^{\frac{1}{k}}} m)=O(k)\) 的,不过实践中最常用 \(k=2\)。

中国剩余定理

  • 给定如下同余方程组,其中 \(m_i\) 与 \(m_j\) 互质。

\[\begin{cases} x \equiv b_1\ ({\rm mod}\ m_1) \\ x\equiv b_2\ ({\rm mod}\ m_2) \\ ... \\ x \equiv b_n\ ({\rm mod}\ m_n)\end{cases} \]

  • 求最小正整数解。

  • 思路:构造一组 \(x_1,x_2,\dots,x_n\),使得 \(x_i\equiv 1\pmod {m_i},x_i\equiv 0\pmod {m_j}(j\neq i)\)。

  • 从而我们有 \(x=\sum\limits_{i=1}^{n} b_ix_i\),解系为 \(x_0=x+kM\),最小正整数解 \(x_1=x\bmod M(M=\prod\limits_{i=1}^{n}m_i)\)。

  • 证明从构造里就能看出。

  • 下面说一下怎么构造。取 \(now_i=\dfrac{M}{m_i}\),显然有 \(now_i\equiv 0\pmod {m_j}\),则 \(x_i=now_i\times now_i^{-1}\pmod {m_i}\)。

扩展中国剩余定理

  • 给定如下同余方程组,不保证 \(m_i\) 与 \(m_j\) 互质。

\[\begin{cases} x \equiv b_1\ ({\rm mod}\ m_1) \\ x\equiv b_2\ ({\rm mod}\ m_2) \\ ... \\ x \equiv b_n\ ({\rm mod}\ m_n)\end{cases} \]

  • 原思路所需的性质根本不存在。考虑另起炉灶。

  • 尝试将方程合并。

  • 令 \(x_0\) 满足前两个方程,则有 \(1\times x_0+m_1\times y_1=b_1\)。形式不好看,整理一下,\(x_0=m_1\times y_1+b_1=m_2* y_2+b_2\)。

  • 从而有 \(m_1\times y_1-m_2\times y_2=b_2-b_1\)。

  • exGCD。容易给出 \(y\) 从而得到 \(x\)。

  • 定理:对如上的二同余方程组,如果有特解 \(x_0\) ,则解系为 \(x\equiv x_0\pmod {\operatorname{lcm}(m_1,m_2)}\) 。这也是合并出的新方程。

  • 证明:

    • 正确性略,lcm 是可以约掉的。

    • 唯一性:假设有 \(x,y\) 都满足要求,则 \(x-y\equiv 0\pmod{m_1}\) 或 \(\pmod{m_2}\),所以 \(x-y\equiv0\pmod {\operatorname{lcm}(m_1,m_2)}\),但 \(x,y<\operatorname{lcm}(m_1,m_2)\),所以 \(x-y=0,x=y\),不成立。

  • 注意,虽然这个也是转化成剩余系,也可以调整成最小正整数解,但这一步和上面的 exGCD 可以说半毛钱关系都没有,因为 \(x\) 并不是 exGCD 的内容!!!请先用 \(\dfrac{c}{g}\) 把 \(y\) 调整好,再用它来做 \(x\)!!!

  • 另外,这里还有一点小 trick。考虑 exCRT 的同余方程中式左 \(x\) 系数不为 \(1\) 的情况。

  • 考虑重构该方程。记系数为 \(k\),则原同余方程等价于 \(k\times x+m\times y=b\)。

  • 老规矩,先用裴蜀定理判一下解的存在性。然后得出 \(x\) 的解系,从而对应母方程等价于该解系。

例题

P5091 【模板】扩展欧拉定理

  • 板子,使用秦九韶算法即可。注意扩欧开头的那句话。

标签:进阶,pmod,sq,varphi,times,mod,同余,equiv
From: https://www.cnblogs.com/weixin2024/p/17053182.html

相关文章

  • mysql进阶
    事务 要么都成功,要么都失败ACID原子,一致,持久,隔离原子性,一致性,隔离性,持久性原子性:要么都成功,要么都失败回滚一致性:事务前后的数据完整性要保证一致持久性:事务一......
  • 同余最短路学习笔记
    同余最短路通常可以解决形如给出若干整数,用它们拼出大整数而产生的问题。其工作原理是选择一个模数\(m\),将整数分成\(m\)个同余类,将每个同余类看做一个状态。那么拼\(......
  • MySql学习笔记--进阶05
          ......
  • 【C#进阶】委托的本质:方法对象的应用
    一、前言  翻回之前写的博客,前期写的结构确实差很多,  这次细看了《委托那些事(一)、(二)》,忍不住重新写一下,之前把简单的事情复杂化了。  为什么现在思维不一样......
  • jQuery进阶
    一、jQuery动画1.1jQuery的显示和隐藏jQuery中显示方法为.show(),隐藏方法为.hide()。在无参数的时候,只是硬性的显示内容和隐藏内容在.show()和.hide()......
  • C++ 算法进阶系列之从 Brute Force 到 KMP 字符串匹配算法的优化之路
    1.字符串匹配算法所谓字符串匹配算法,简单地说就是在一个目标字符串中查找是否存在另一个模式字符串。如在字符串ABCDEFG中查找是否存在EF字符串。可以把字符串ABCDE......
  • app自动化测试之Capability 使用进阶
    Capability是一组键值对的集合(比如:"platformName":"Android")。Capability主要用于通知Appium服务端建立Session需要的信息。客户端使用特定语言生成Capabilities,最......
  • 12 图像色彩空间转换 - 进阶
    12图像色彩空间转换-进阶opencv知识点:色彩空间转换-cvtColor()提取指定色彩范围区域-inRange()更换图像背景-copyTo的mask用法本课所解决的问题:如何提取......
  • MySQL 进阶篇 Part 2
    ......
  • MySQL 进阶篇 Part 1
    ......