模板 乘法逆元

2021-08-10 14:40:02 字數 1177 閱讀 9295

適用:求某乙個數在模意義下的乘法逆元。 如果a

、p互質,那麼有ap

−a就是p的倍數,所以有ap

≡a(modp)

,ap−

1≡1(

modp

) 。所以只要打乙個快速冪就ok了。

code

#include

using namespace std;

int n,p;

int power(int

x,int k)

return ans%p;

}int main()

適用:某一區間的所有的數在模意義下的乘法逆元、求單個逆元(遞迴求解)。

簡單地說就是乙個遞推。

首先我們有:1−

1≡1(

modp)

然後,我們設p=

k×i+

r,r1<

i<

p 再將這個式子放到

modp

意義下一看:k×

i+r≡

0(modp)

再兩邊同時乘上i−

1,r−

1 可以得到: k×

r−1+

i−1≡

0(modp)

移項: i−

1=−k

×r−1

(modp)

所以: i−

1≡−[

pi]×

(pmodi)−

1 於是乎我們就可以遞推處當前的逆元了:

a[i]=-(p/i)*a[p%i]

然後其實吧,我們還可以通過遞迴求解,在o(

log2

p)的時間內求出單個逆元。怎麼證明時間複雜度呢:由於我們可以發現

pmod

i2 ,所以每次的子問題規模減半,最終遞迴次數也可見了。

code:

#include

#define maxn 3000005

using

namespace

std;

int n;

long

long p;

long

long ans[maxn];

int main()

模板 乘法逆元

這是一道模板題 給定n,p求1 n中所有整數在模p意義下的乘法逆元。輸入格式 一行n,p 輸出格式 n行,第i行表示i在模p意義下的逆元。輸入樣例 1 複製10 13 輸出樣例 1 複製179 108112 534 1 n 3 106,n1 n 3 106,n輸入保證 p p p 為質數。先扔個線性...

模板 乘法逆元

這是一道模板題 給定n,p求1 n中所有整數在模p意義下的乘法逆元。輸入格式 一行n,p 輸出格式 n行,第i行表示i在模p意義下的逆元。輸入樣例 1 複製 10 13 輸出樣例 1 複製 179 108112 534 1 n 3 106,n輸入保證 p 為質數。關於這道題,其實就是乙個求逆元的模板...

luogu P3811 模板 乘法逆元

這是一道模板題 給定n,p求1 n中所有整數在模p意義下的乘法逆元。一行n,p n行,第i行表示i在模p意義下的逆元。10 13179 108112 534說明 1 leq n leq 3 times 10 6,n p 20000528 1 n 3 10 6,n 輸入保證 p p 為質數。逆元可以線...