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

乘法逆元小结

时间:2024-12-17 22:54:43浏览次数:5  
标签:int ll pmod 逆元 小结 sum 乘法

  • 什么是乘法逆元

当有 $ a*x ≡ 1 \pmod {p} $ 时,则 \(a\)是模 $ p$ 意义下的乘法逆元。


费马小定理求逆元


费马小定理

$a ≡ a^{p-1} \pmod {p} $

所以

$a^{p-2} ≡ 1 \pmod {p} $

求 \(a^{p-2} \bmod p\)即可。

当且仅当 \(p\) 为质数且 \(a,p\) 互质时可用。

int ksm(int x,int k){
	int sum=1;
	while(k){
		if(k&1) sum=sum*x%p;
		x=x*x%p; k>>=1;
	}
	return sum;
}
signed main(){
	px=read(),p=read();
	ans=ksm(x,p-2);
	return 0;
}

扩展欧几里得求逆元


这个方法十分容易理解,而且对于单个查找效率似乎也还不错,比后面要介绍的大部分方法都要快(尤其对于 $ \bmod {p}$比较大的时候)。

这个就是利用拓欧求解 线性同余方程\(a*x≡ c\pmod {b}\)
的$ c=1$的情况。我们就可以转化为解 \(a*x + b*y = 1\) 这个方程。

void Exgcd(ll a, ll b, ll &x, ll &y) {
    if (!b) x = 1, y = 0;
    else Exgcd(b, a % b, y, x), y -= a / b * x;
}
int main() {
    ll x, y;
    Exgcd (a, p, x, y);
    x = (x % p + p) % p;
    printf ("%d\n", x); //x是a在mod p下的逆元
}

当 \(a,p\) 互质时即可用。

标签:int,ll,pmod,逆元,小结,sum,乘法
From: https://www.cnblogs.com/lxgswrz/p/18613595

相关文章

  • c++小结之字符串字面量
    存储区域字符串字面量是形如"Thisisabook.\n"这样的一组明确的字符串。字符串字面量通常存储在内存的静态存储区。静态存储区大小固定,不受操作系统影响,但是一般比较小。多个相同的字符串字面量多个相同的字符串字面量在内存是存储在同一个位置。比如:constchar*a="This......
  • 12.10 CW 模拟赛 T2. 乘法
    算法剪枝怎么都过不去\(50\%\),红温了不管了容易想到的是,枚举最终\(B\)进制数的位数,然后进行一个搜索来确定答案这样不够优秀,考虑折半搜索,我们将\(B\)进制数分为两个部分,然后分别判断两个部分对\(n\)取余的值,若可以,考虑归并具体怎么操作呢?对于左......
  • 人大金仓&数据库培训小结
    临时表oracle中只有全局临时表。操作行为记录到数据库写前日志。记录到日志里面可以重现行为。oracle不能直接改用户名字金仓一句话就能改用户名字参照建表只能参照一部分(金仓,oracle),丢定义了oracle没有int类型,用的是number(38)金仓数据库类型很多oracle(5,-2)到金仓会出问......
  • influxdb数据库结构小结
    转载请注明出处:InfluxDB是一个开源的时序型数据库,它的数据主要存储在三个文件夹中:data、meta 和 wal。data 文件夹:这个文件夹存储的是InfluxDB的数据文件,也称为TSM文件。TSM文件是InfluxDB自研的一种存储引擎,它将时序数据和索引数据一起存储在一个文件中,通过这......
  • 超长整数的乘法运算(java版)
    【问题描述】编写程序实现两个超长整数(大于等于0,每个最长80位数字)的乘法运算。【输入形式】从键盘分行读入两个超长整数,要考虑输入高位可能为0的情况(如00083),每行的最后都有回车换行。【输出形式】输出只有一行,是两个长整数的乘法运算结果,从高到低依次输出各位数字,各位数字......
  • 乘法和逆矩阵 matrix multiplication and inverses
    乘法和逆矩阵matrixmultiplicationandinverses​ 首先说一下矩阵乘法。在之前的篇章里已经说明过一些矩阵的乘法的理解,在这一篇对整个矩阵乘法做一个概括,并提出新的理解。​ 我们考虑矩阵乘法[1]:\[\mathbfA\mathbfB=\mathbfC\]这里\(\mathbfA\)为\(m\)行\(n\)列的......
  • 1.1.4 逆元
    1.1.4逆元主要内容:扩欧求逆元,快速幂求逆元,线性(递归)求逆元,同余模公式(补充),反复平方法求幂(补充)一、逆元首先给出逆元的定义:$$\begin{aligned}假设a\cdotp&\equiv1\quad(mod\quadb)\\且(a,b)&=1\quad即\quada,b互素\\则称p为a的逆元&,记作p=a^{-1}\end{aligned}$......
  • Seata之小结和测试
    目录一、本地事务二、分布式事务2.1、典型的分布式事务应用场景2.2、跨库事务2.3、分库分表2.4、微服务架构三、两阶段提交协议(2PC)2PC存在的问题四、Seata4.1、Seata的三大角色4.2、SeataAT模式的设计思路五、Seata快速开始SeataServer(TC)环境搭建步骤一:下载安装包步骤二:建表(db......
  • go mod使用小结
    转载请注明出处:gomod命令是用于管理Go语言项目的模块依赖关系的工具。Go语言从1.11版本开始引入了模块支持,并在后续版本中逐渐完善。模块是Go语言代码的一个集合,每个模块都有一个唯一的版本标识。通过使用模块,可以更好地管理项目的依赖关系,确保代码的兼容性和可维护......
  • getent使用小结
    转载请注明出处:getent 是一个用于访问系统数据库的命令,通常用于获取与网络有关的信息,比如用户、组、主机名、服务等。这个命令是Linux和Unix系统中非常有用的工具,可以用来查询多种数据库,无需进行直接的配置文件查找。getent命令特性多种数据库支持:getent 可以访问......