数论逆元
文章目錄
- 1 什么是逆元
 - 2 存在逆元的條件是什么
 - 3 怎樣求一個(gè)數(shù)的逆元
 - 1.[ 歐幾里得擴(kuò)展]
 - 2. 費(fèi)馬小定理 (最常用)
 
- 4 擴(kuò)展(常用)
 - 1. 線性逆元(常用)
 - 2 快速階乘逆元(常用)
 
逆元是數(shù)論之中的一個(gè)重要概念
參考博客 ACdreamer
參考書籍 《高中數(shù)學(xué) 選修 4-6》
1 什么是逆元
2 存在逆元的條件是什么
3 怎樣求一個(gè)數(shù)的逆元
1.[ 歐幾里得擴(kuò)展]
不懂的點(diǎn)這里
 a?b+n?t=1a*b + n *t = 1a?b+n?t=1
2. 費(fèi)馬小定理 (最常用)
- 如果n 是素?cái)?shù),費(fèi)馬小定理 a(n?1)=1(modn)a^{(n-1) }= 1 \ (mod \ n)a(n?1)=1?(mod?n),那么a關(guān)于n的逆元就 是a(n?2)a^{(n-2)}a(n?2)
 
- 如果n 不是素?cái)?shù),利用歐拉定理同理
 
4 擴(kuò)展(常用)
1. 線性逆元(常用)
如果p是一個(gè)奇質(zhì)數(shù),則可以在o(n)時(shí)間內(nèi)求出所有關(guān)于同余系關(guān)于p的逆元
 證明如下
 對p進(jìn)行帶余除法,求i的逆元
 p=i?k+t(0<t<i)p = i * k + t \ ( 0 < t < i)p=i?k+t?(0<t<i)
 等式兩邊同時(shí)對關(guān)于p取模
 于是 t=?i?k(modp)t = -i * k ( mod \ p)t=?i?k(mod?p)
 等式兩邊同時(shí)乘以 inv(i)?inv(t)inv(i) * inv(t)inv(i)?inv(t)
 inv(i)=?k?inv(t)(modp)inv(i) = -k * inv(t) ( mod\ p)inv(i)=?k?inv(t)(mod?p)
 inv(i)=(p?k?inv(t))(modp)inv(i) = (p - k* inv(t)\ ) (mod\ p)inv(i)=(p?k?inv(t)?)(mod?p)
 inv(i)=(p?p/i?inv(p%i))(modp)inv(i) = (p - p \ / \ i * inv(p\ \% \ i ) ) (mod \ p)inv(i)=(p?p?/?i?inv(p?%?i))(mod?p)
 這樣就可以用一個(gè)數(shù)組存儲關(guān)于p的所有逆元
2 快速階乘逆元(常用)
const int maxn = 1e5+10; long long fac[maxn],invfac[maxn]; void init(int n){fac[0] = 1;for(int i = 1;i <= n; ++i) fac[i] = fac[i-1]*i%mod;invfac[n] = qpow(fac[n],mod-2);for(int i = n-1;i >= 0; --i) invfac[i] = invfac[i+1]*(i+1)%mod; }總結(jié)
                            
                        - 上一篇: [短彩信]C#短彩信模块开发设计(2)—
 - 下一篇: GIS数据里的4D数据