首页 > 其他分享 >同余

同余

时间:2024-07-06 18:10:02浏览次数:12  
标签:pmod dfrac bmod kp ax 同余 equiv

1.模运算基本性质

基本概念:

若整数 \(a,b\) 除以 \(p\) 的余数相等,则称 \(a,b\) 在模 \(p\) 意义下同余,记作 \(a \equiv b \pmod{p}\) 或者 \(a \bmod p=b \bmod p\)。

模运算的定义:

\[a \bmod p=\begin{cases}a-p\lfloor \dfrac{a}{p}\rfloor &a\geq 0\\-(-a \bmod p) & a<0\end{cases} \]

性质:

  1. \((a+b) \bmod p =(a \bmod p+b \bmod p)\bmod p\)。

  2. \(ab \bmod p=(a\bmod p)(b \bmod p)\bmod p\)。

  3. 对于任意正整数 \(k\),有 $a \bmod p=(a \bmod kp)\bmod p $。

    • Proof:考虑将 \(n\) 用 \(p,kp\) 表示,可得 \(n=xp+r_1=ykp+r_2\ (0\leq r_1<p,0\leq r_2 <kp)\)。继续将 \(r_2\) 用 \(p\) 表示,可得 \(r_2=zp+r_3\ (0\leq r_3<p)\)。命题得证。
  4. 若 \(k\mid a\),则有 \(\dfrac{a}{k} \bmod p=\dfrac{a \bmod kp}{k}\)。

    • 由模运算的定义可得:

      \[\dfrac{a\bmod kp}{k}=\dfrac{1}{k}(a-kp\lfloor \dfrac{a}{kp}\rfloor)=\dfrac{a}{k}-p\lfloor\dfrac{a}{kp}\rfloor=\dfrac{a}{k}\bmod p \]

2.逆元

分数取模

对于 \(\dfrac{a}{b}\) 这样一个分数,对它进行模运算就会比较复杂。易得 \(\dfrac{a}{b}=a \cdot \dfrac{1}{b}\)。设 \(\dfrac{1}{b}\equiv x\pmod{p}\),则有 \(xb \equiv 1 \pmod{p}\)。找到这样一个最小的 \(x\),就会有 \(ax \equiv \dfrac{a}{b} \pmod{p}\)。\(x\) 就是下面提到的乘法逆元。

乘法逆元

设 \(a\) 为整数,\(x\) 为正整数,若

\[ax\equiv 1\pmod{p} \]

则称 \(x\) 为 \(a\) 在模 \(p\) 意义下的乘法逆元。

性质:当且仅当 \(a\perp p\) 时,\(a\) 在模 \(p\) 意义下的乘法逆元才存在。

  • Proof:设 \(ax\equiv 1 \pmod{p}\)。假设 \(\gcd(a,p)=d>1\),则有 \(ax=k_1d,p=k_2d\)。由模运算的定义得:

    \[ax\bmod p=(k_1d) \bmod (k_2d)=k_1d-k_2d\lfloor \dfrac{k_1d}{k_2d}\rfloor=d(k_1-\lfloor\dfrac{k_1d}{k_2d}\rfloor) \]

    由于 \(d>1\),则 \(ax \bmod p\) 不可能等于 \(1\) ,假设不成立。

费马小定理

若 \(p\) 为质数,且 \(a\perp p\),则有:

\[a^{p-1}\equiv 1 \pmod{p} \]

Proof:

设数列 \(S_1=\{1,2,3\dots,p-1\}\),将 \(S_1\) 乘 \(a\) 得 \(S_2=\{a,2a,3a\dots,(p-1)a\}\)。

将两个数列同时 \(\bmod p\) 可得 \(S_1=\{1,2,3\dots,p-1\},S_2=\{a \bmod p,2a \bmod p,3a \bmod p\dots,(p-1)a \bmod p\}\)。

设 \(a \bmod p=x\),则 \(2a \bmod p=2x \bmod p\)。由于 \(p\) 为质数,\(2x \bmod p \ne x\Rightarrow a\bmod p \ne 2a \bmod p\)。

类似地,可得 \(3x \bmod p \ne x,3x \bmod p \ne 2x \bmod p\Rightarrow3a \bmod p\ne a \bmod p,3a \bmod p \ne 2a \bmod p\)。

以此类推,\(S_2\) 的元素间两两不等,且没有 \(0\) 出现,所以 \(S_1,S_2\) 在模 \(p\) 意义下都是 \(1\sim p-1\) 的排列。

设 \(S_1,S_2\) 中所有元素的连乘分别为 \(X,Y\),则有:

\[\begin{aligned}X&\equiv Y \pmod{p}\\(p-1)!&\equiv a^{p-1}\cdot (p-1)! \pmod{p}\\a^{p-1}&\equiv 1\pmod{p}\end{aligned} \]

由此可得,\(a\) 在模 \(p\) 意义下的乘法逆元 \(x\) 即为 \(a^{p-2}\)。

标签:pmod,dfrac,bmod,kp,ax,同余,equiv
From: https://www.cnblogs.com/XP3301Pipi/p/18287553

相关文章

  • 由AtCoder_ABC357D引发的除法同余学习
    鉴于最近的Atcoder周赛又出现除法求余,下定决心学习逆元相关内容同余概述定义同余定义:若a和b是整数,且m|(a-b),则称a和b模m同余。即两者除以m得到的余数相同。剩余系:一个模m完全剩余系是一个整数集合,任何一个整数恰好与该集合中的一个元素模m同余。例如0,1,...,m-1的集......
  • 从CF1660F2看同余分组
    https://codeforces.com/contest/1660/problem/F2同余分组,树状数组维护逆序对先承继F1的做法,维护一个前缀和数组,让s[i]=='+'为\(1\),s[i]=='-'为\(-1\)。那么要满足两个条件:\(pre_r-pre_l\leq0\)要么加减号相同,要么减号更多(只有减号能减少)\(pre_r-pre_l......
  • P6610 [Code+#7] 同余方程
    P6610[Code+#7]同余方程首先可以中国剩余定理。至于为什么\(a,b\)在满足同余条件后\(a^2+b^2\)仍然满足,是因为根据中国剩余定理的过程,会得到只有当前方程结果为\(a\)的数加起来,所以不管套什么函数都是对的。然后就是推式子了。\[\begin{aligned}ans&=\sum_{a+b\equiv......
  • 线性同余-常见语言编译器参数
    Sourcem(multiplier) a   (increment) coutputbitsofseedin rand() /Random(L)NumericalRecipes23216645251013904223 Borland C/C++232226954771bits30..16in rand(),30..0inlrand()glibc (usedby GCC)[5]231110351524512345b......
  • [学习笔记] 丢番图方程 & 同余 & 逆元 - 数论
    首先,他们几个都是兄弟,有着极大的相似性。另外,他们的各自的思想都能够很好的服务于另外几个,有助于加深理解。线性丢番图方程丢番图不是个图啊!他是个man……——百度百科现在主要说的是二元线性丢番图方程:通用形式为\(ax+by=c\)。其中常数全都为整数。很像不定方程对吧?现在在......
  • 「NOIP2012」同余方程 题解!!
    嗨嗨嗨!又是我想写这道题,我们就需要掌握:拓展欧几里得顾名思义,它就是欧几里得算法(人话:辗转相除法)的proMax版本别告诉我你不会辗转相除法拓展欧几里得的作用是求对于方程\[a*x+b*y=gcd(a,b)\]解出x,y的值。让我们一步步分析!贴个辗转相除板子先:voidojld(inta,intb){ i......
  • 初等数论——同余
    前置模运算定义:\(a\%b(a\modb)\),表示\(a\)除以\(b\)的余数。加法:\((a+b)\%p\)。减法:\((a-b+p)\%p\)。加\(p\)是为了防止负数。乘法:\((a\timesb)\%p\)。除法无法直接运算,要用逆元(在下面会讲到)。平方运算:快速幂模运算满足:结合律,交换律,分配律。......
  • 算法学习笔记(13):同余最短路
    同余最短路是一种通过同余把状态分类,再通过建图跑最短路解决问题的算法。可以高效率解决一些特定的问题。非常的奇妙。算法鉴于学不懂,所以直接搬\(oi-wiki\)的题吧。呜呜呜。P3403跳楼机有一栋高为\(h\)的楼,初始在一楼,每次可以向上移动\(x\),\(y\),\(z\)层,也可......
  • 【动态规划】【同余前缀和】【多重背包】[推荐]2902. 和带限制的子多重集合的数目
    本文涉及知识点动态规划汇总C++算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例包括课程视频C++算法:滑动窗口总结多重背包LeetCode2902.和带限制的子多重集合的数目给你一个下标从0开始的非负整数数组nums和两个整数l和r。请你返回nums中子多重集......
  • P1082 [NOIP2012 提高组] 同余方程
    原题链接扩展欧几里得算法的应用,关于原理性的讲解这里就略去了,这边给出学习链接即模板。intexgcd(inta,intb,int&x,int&y){if(b==0){x=1;y=0;returnx;}intd=exgcd(b,a%b,x,y);x=y;y=d-a/b*y;returnx;}文......