乘法逆元模板
轉載自:https://www.cnblogs.com/rir1715/p/7748054.html
乘法逆元
一、定義
若在mod p意義下,對于一個整數a,有a*b≡1(mod p),那么這個整數d即為a的 乘法逆元,同時a也為d的乘法逆元
二、求法
(1).費馬小定理
當p為質數時,對于任意整數a,滿足a^p-a是p的整數倍
在mod p意義下可以表示為
所以a^p-2即為a在 mod p 意義下的逆元
(2).擴展歐幾里得
a*x≡1(mod p)可以轉化成ax+py=1的形式
那么顯然我們可以用擴展歐幾里得算法解2元一次方程解出x
(3).O(n)遞推1~n的逆元
我們就可以做到O(n)遞推
- inv[i]=(p-p/i)*inv[p%i]%p;
(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的逆元
ps:模數不是素數時同樣適用
(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)?bp/b
=(a%(bp) )/p
總結
- 上一篇: 1. spark ML概述
- 下一篇: 【致远FAQ】V8.0sp1_单位管理员