遞推求乘法逆元

2021-08-10 00:05:22 字數 760 閱讀 1285

求解1….n 在大質數p(p>n)下的乘法逆元

方法有三種

第一:費馬小定理(即快速冪求解每乙個數的p-2次方) 當n,p過大是會超時(n log(p))

第二:拓展歐幾里得定理(直接擺公式就好了)

第三:n的範圍比較大是可以用遞推式:

f[i]:=(p-(p div i))*f[p mod i] mod p

公式推導如下:

令k=p div i ,t=p mod i

顯然的k*i+t=p,同時意味著k*i+t≡0 (mod p)

-k*i≡t (mod p)

f[i]記錄的是i的逆元,所以上式同時除以i*t 時

就有了 -k*f[t]≡f[i] (mod p)

展開後得到 f[i]:=((p-p div i)*f[p mod i]) mod p;

pascal**如下:

program df;

var i,n:longint;

p:int64;

f:array[0..5000000] of longint;

begin

readln(n,p);

f[1]:=1;

for i:=2 to n do

f[i]:=(p-(p div i))*((f[p mod i]) mod p) mod p;

for i:=1 to n do

writeln(f[i]);

end.

洛谷 P3811 模板 乘法逆元 線性遞推逆元

給出n,p,求1 n所有數模p意義下的逆元.無論是擴充套件歐幾里得還是費馬小定理都是o n log 的,會t,這題因為是求1 n的所有數的逆元,因而可以遞推,若要求inv i 則可以設k p i,b p i.那麼k i b p 則k i b與0同餘.所以k i與 b同餘.所以k inv b 與 in...

acm 遞推求值

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給你乙個遞推公式 f x a f x 2 b f x 1 c 並給你f 1 f 2 的值,請求出f n 的值,由於f n 的值可能過大,求出f n 對1000007取模後的值。注意 1對3取模後等於2 輸入 第一行是乙個整數t,...

遞推求解2048

hdu 2006 10 acm contest的頒獎晚會隆重開始了!為了活躍氣氛,組織者舉行了乙個別開生面 獎品豐厚的 活動,這個活動的具體要求是這樣的 首先,所有參加晚會的人員都將一張寫有自己名字的字條放入 箱中 然後,待所有字條加入完畢,每人從箱中取乙個字條 最後,如果取得的字條上寫的就是自己的...