逆元
逆元的应用场景——模意义下的除法
- 在模意义下,加减乘必然都是可行的,(ab)%p=((a%p) (b%p))%p ;但是除法是不可行的,(a/b)%p
(a%p)/b - 假设有个值inv[b],(即
), 满足a / b = a inv[b],即我们就需要找到满足b inv[b]%p=1的b;根据费马的定理,如果p是个质数,则有 %p=1, 即inv[b]= ,因此这样我们就可以把模意义下的除法改为乘法,需要用到快速幂(取模)
Code(求 ):
1 | #include<bits/stdc++.h> |
- 逆元的线性递推公式:当p为质数时,必然有inv[i]=inv[p%i]*(p-p/i)%p,可以在复杂度为O(n)的情况下求出1-n的逆元:
1
2
3inv[1]=1;cout<<1<<endl;
for(int i=2;i<=n;i++)
inv[i]=inv[p%i]*(p-p/i)%p,cout<<inv[i]<<endl;
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.


