首页 > 其他分享 >乘法逆元

乘法逆元

时间:2023-05-03 09:33:48浏览次数:36  
标签:pmod inv 逆元 equiv1 ax 乘法 equiv

问题

给定\(a\)和\(b\),保证\(a\)与\(b\)互质,求\(ax\equiv1\pmod{b}\)

求解方式1

扩展欧几里得能求\(ax+by=\gcd(a,b)\),因为a与b互质,等价于求\(ax+by=1\),即\(ax=1-by\),就等同于求\(ax\equiv1\pmod{b}\)

求解方式2

根据费马小定理易知当\(b\)为质数时,在\(a^{b-1}\equiv1\pmod{b}\),故\(ax\equiv a^{b-1}\pmod{b}\),得\(x\equiv a^{b-2}\pmod{b}\)

求解方式3

可以线性递推,设\(b=kc+d\),则

\[kc+d\equiv 0\pmod{b} \]

\[k*inv(d)+inv(c)\equiv 0\pmod{b} \]

\[inv(c)\equiv {-k*inv(d)}\pmod{b} \]

\[inv(c)\equiv {-\left\lfloor\dfrac{b}{c}\right\rfloor*inv(b\pmod{i})}\pmod{b} \]

\[inv(c)\equiv {(b-\left\lfloor\dfrac{b}{c}\right\rfloor)*inv(b\pmod{i})}\pmod{b} \]

故可以根据此式线性递推逆元

标签:pmod,inv,逆元,equiv1,ax,乘法,equiv
From: https://www.cnblogs.com/cdx1221/p/17368691.html

相关文章

  • 快速幂+大整数乘法
    (快速幂+位运算)\(0\lea,b\le10^9\\0\leqp\leq10^9\)快速幂:(1)取模运算法则(a+b)%p=(a%p+b%p)%p(a-b)%p=(a%p-b%p)%p(a*b)%p=(a%p*b%p)%p(2)快速幂可以在O(logk)内算出\(a^k\)modp的值先处理出:\(a^{2^0}\mod\p\)\(a......
  • 矩阵乘法的指令集加速例子
    这里就不介绍基本概念了,直接给代码和对比结果。分别是普通C++代码,SSE加速代码和OpenCV代码。代码基于VS2017、OpenCV430和Qt5.9。CPU型号是IntelCorei5-7400。Matmul1(constMat&a,constMat&b){ASSERT(a.cols==b.rows);#defineCOUNTa.colsMatc=Mat::z......
  • hdu 5446 长春区域赛网络赛1010 Unknown Treasure(lucas定理+中国剩余定理+移位乘法)
    题目链接:hdu5446题目大意:求出Cmn%M,M=p1⋅p2⋯pk题目分析:首先对于每个质数pi我们,我们可以利用Lucas定理求出Cmn%pi的值,Lucas定理如下:Cmn%p=Cm/pn/p⋅Cm%pn%p%p然后我们可以利用中国剩余定理求取最后答案:M=∏i=1kpi,Mi=M/piCmn%M=∑i=1kCmn%pi⋅Mi⋅inv[Mi]因为做乘法......
  • 九九乘法表
    打印九九乘法表首先理解输出9*9的方阵<script>for(letq=1;q<=9;q++){for(leti=1;i<=9;i++){document.write('#&nbsp;');}document.write('<br>')......
  • JavaScript 九九乘法表
    方法一:观察规律:第一个数每行都是自增1。我们发下第二个数都是从1开始,依次递增1,永远不大于前面的数。前面数字每自增一次,后面数字自增一轮。我们可以用双重for循环,外层初始值设为i,i从1开始,到9结束,自增1内层从初始值设为j,j从1开始,小于等于外层的i,自增1九九乘法表代码如下:for......
  • 九九乘法表
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<math.h>intmain(void){ inti,j; for(i=1;i<10;i++) { for(j=1;j<=i;j++) {  printf("%d*%d=%d ",j,i,i*j); } printf("\n"); ......
  • 关于大数乘法的数组类型问题(int 还是char)
    可以知道在处理高精度乘法的时候,我们是不考虑当场进位的,在所有位数都模拟完竖式乘法后才进行逐位进位,这就要求存储每个位的数组保证不会爆掉溢出众所周知char类型最多只能存储到255,非常非常容易溢出成负数,对于char型数组要考虑每一步乘法都要进位。而int型数组最大21亿就不用考......
  • python写了各九九乘法表
    #打印九九乘法表foriinrange(1,10):print()#打印一个空行forjinrange(1,i+1):#输出内容print(str(i)+"x"+str(j)+"="+str(i*j),end="")通过这里,学会了for的使用格式for变量inrange(开始值,结束值):print("空一个\t") ......
  • 高精度加法、减法、乘法【自存】
    预处理intMax_len;//最多可能的位数stringa,b;voidinit(){cin>>a>>b;Max_len=500;//intind=Max_len,i=a.size()-1;while(i>=0){ans[ind]=a[i]-'0';ind--;i--;}in......
  • 基于最小二乘法和快速解耦法的电网状态估计
    基于最小二乘法和快速解耦法的电网状态估计测试环境:MATLAB电网状态估计问题的实质是当方程的个数大于变量的个数时,对方程变量进行无偏估计。对于电网系统,变量为节点电压(即状态值,由实部和虚部),节点和支路功率的一部分(包含由于客观条件造成的误差)是数量测量,即将被给予。方......