[AcWing]876. 快速幂求逆元(C++实现)快速幂求逆元模板题
1. 题目
2. 读题(需要重点注意的东西)
思路:
快速幂的作用
快速地求出a的k次方模上p的结果
快速幂的主要思想
预处理出logk个数,然后用这logk个数中的若干个数在O(1)的时间组合出a的k次方模上p的结果。
快速幂的证明
同余式
设有正整数m,a,b。若满足m|(a-b),即m能被(a-b)整除,则称a与b对m同余。记为:
a ≡ b (mod p) ,也可以记为 a = b + kp
费马小定理
如果p是一个质数,而整数a不是p的倍数,则有a^(p-1) ≡ 1 (mod p)
乘法逆元的定义(太长不看)
若整数 b,m 互质,并且对于任意的整数 a,如果满足 b|a,则存在一个整数 x,使得 a/b≡a × x (mod m),则称 x 为 b 的模 m 乘法逆元,记为 b^−1 (mod m)。
b 存在乘法逆元的充要条件是 b 与模数 m 互质。当模数 m 为质数时,b^(m−2) 即为 b 的乘法逆元。
(看这里)简而言之:
找到一个x,使得b × x ≡ 1 (mod m),这个x,则称 x 为 b 的模 m 的乘法逆元。