在做題的過程中,我們經常會遇到 % 求算結果的情況
這個等價於求算的乘法逆元
1.mod(模數)爲質數時
利用費馬小定理有:在模的意義下的乘法逆元 =
代碼實現爲快速冪,求解一個的時間複雜度爲
2.利用擴展歐幾里德算法求解
將原式轉化爲
求出,最後求出最小正整數解:( x % mod + mod ) % mod
3.O(n)線性求解
用於求解連續數字的逆元 例如:洛谷乘法逆元模版
代碼如下:
inv[1]=1;
for (int i=2;i<=n;++i)
inv[i]=(-(mod/i)*(LL)inv[mod%i]%mod+mod)%mod;
4.O(n)求階乘的逆元
持續更新。。。