乘法逆元
一、定义
若在mod p意义下,对于一个整数a,有a*b≡1(mod p),那么这个整数d即为a的 乘法逆元,同时a也为d的乘法逆元
二、求法
(1).费马小定理
当p为质数时,对于任意整数a,满足ap-a是p的整数倍
在mod p意义下可以表示为
ap-a≡0(mod p)
即为ap≡a(mod p)
所以ap-1≡1(mod p)
即为a*ap-2≡1(mod p)
所以ap-2即为a在 mod p 意义下的逆元
(2).扩展欧几里得
ax≡1(mod p)可以转化成ax+py=1的形式
那么显然我们可以用扩展欧几里得算法解2元一次方程解出x
(3).O(n)递推1~n的逆元
我们就可以做到O(n)递推
inv[i]=(p-p/i)*inv[p%i]%p;
从某个dalao博客里盗的图欸嘿嘿
(4).O(n)求阶乘的逆元
我们假设有x使得 a!x≡1(mod p)
则(a-1)!*ax≡1(mod p)
所以说(a-1)!的逆元为 ax%p
那么我们就可以先求出n!的逆元再倒推回去
(5).欧拉定理
由aφ(p)≡1 (mod p)得aφ(p)−1是a的逆元
模数不是素数时同样适用
(6).一个小推论
(a/b)%p=(a%(bp))/ p
证明:
(a/b)%p=a/b-⌊(a/b)/p⌋*p
=a/b-⌊a/(b*p)⌋*p
=a/b-⌊a/(b*p)⌋*b*p/b
=(a%(bp) )/p