線性求逆元及其過程
寫在前面
連續兩天考了求逆元。。。。。。所以想著寫一篇關於線性求逆元的部落格。。
先給程式:
inv[1]=1;
for(int i=2;i<=n;++i)
inv[i]=MOD-(long long)MOD/i*inv[MOD%i]%MOD;
然後一波推導:
我們要求i在模p意義下的逆元inv[i],那麼我們就設ki+r=p,所以ki+r0(mod p)。
移項可以得到:r-ki(mod p)。
兩邊同時除以ir,就可以得到這個式子:
(mod p)
那麼i分之一就是i在模p意義下的逆元,r分之一就是r在模p意義下的逆元。
變成這個式子:inv[i]-k*inv[r](mod p)。
因為r<i,所以r=p%i,式子變為inv[i]-k*inv[p%i](mod p)。
右邊加上一個p:inv[i]=p-k*inv[p%i],k化為p/i(向下取整了所以不考慮r),最後inv[i]就化為了p-p/i*inv[p%i],就是上面的遞推式。證畢。
PS:如果有紕漏之處請dalao指出!蒟蒻馬上修正!
相關推薦
線性求逆元及其過程
寫在前面 連續兩天考了求逆元。。。。。。所以想著寫一篇關於線性求逆元的部落格。。 先給程式: inv[1]=1; for(int i=2;i<=n;++i) inv[i]=MOD-(long long)MOD/i*inv[MOD%i]%MOD; 然後一波推導
線性求逆元的算法
span class 介紹 floor 求逆 方法 lin spa inline 本文介紹\(O(n)\)處理\([1, n]\)在模\(P\)意義下的逆元的方法。 結論 \[inv_i \equiv -\lfloor \frac{P}{i} \rfloor * inv_{
【模板】線性求逆元(洛谷P3367)
Description 給定\(n\),\(p\)求\(1~n\)中所有整數在模\(p\)意義下的乘法逆元。 Input 一行\(n\),\(p\) Output \(n\)行,第\(i\)行表示\(i\)在模\(p\)意義下的逆元。 Solution #include<c
線性求逆元
記錄 兩個 復雜 告訴 urn lin UNC 我們 i+1 線性求逆元 你需要以\(O(n)\)的時間復雜度預處理處 任意 n個數的逆元 記錄一下lunch告訴我的方法 : 處理出 : \(s[i]=\prod_{k=1}^{i}a[k] \quad\) 時間 :\(O
求組合數取模(楊輝三角打表 & 求逆元(擴充套件歐幾里得、費馬小定理、尤拉定理、線性求法) & Lucas)
在acm競賽中,組合數取模的題目還是經常會見到的,所以這是有必要掌握的一個演算法。我本人就因為這個東西而被坑了很多次了= =之前的部落格也都扯過了,就不多說了,下面進入正題。 (1)楊輝三角求組合數 楊輝三角這個東西應該都不陌生,三角的兩邊始終為一,之後向
HDU 5407 CRB and Candies(LCM +最大素因子求逆元)
blog std 歸納 get pos http and -a 思路 【題目鏈接】click here~~ 【題目大意】求LCM(Cn0,Cn1,Cn2....Cnn)%MOD 的值 【思路】來圖更直觀: 這個究竟是怎樣推出的,說實話。本人數學歸納大法沒有推出來
51Nod 1118 機器人走方格--求逆元
() uic stream pri pac ostream ios iostream %d (x/y) %mod =x*(y^(mod-2))%mod; 在算x,y的時候可以一直mod 來縮小 y^(mod-2)顯然是個快速冪 #include <iostr
各種求逆元方法總結[轉]
str com 情況 sans esp 找到 解法 () clu 各種求逆元方法總結[轉] 在MOD的情況下, (a*b/c ) %MOD 不能直接 / c 來求,需要找到一個數 inv 使得 inv * c % MOD = 1 。 這樣 (a*b / c) % M
幾種求逆元的方法
int 才有 gpo log swa class ++ 要求 1-n 一, 擴展歐幾裏得 1 void exgcd(int a,int b,int &x,int &y) 2 { 3 if(b==0) 4 { 5 x
【learning】 多項式求逆元詳解+模板
n) 意義 詳解 需要 一個 求逆 ont time 前置 概述 多項式求逆元是一個非常重要的知識點,許多多項式操作都需要用到該算法,包括多項式取模,除法,開跟,求ln,求exp,快速冪。用快速傅裏葉變換和倍增法可以在$O(n log n)$的時間復雜度下求出一個$n$次
BZOJ 3456: 城市規劃 與 算法介紹(多項式求逆元 , dp)
間接 zoj 3456 ini 不難 har 大小 #define form lock 題面 : 求有 \(n\) 個點的無向有標號連通圖個數 . \((1 \le n \le 1.3 * 10^5)\) 題解 : 首先考慮 dp ... 直接算可行的方案數 ,
除法求模中求逆元的兩種方法
除法 模運算 擴展歐幾裏得 tps sdn 求解 blog span emma 今天下午還是有點閑的,不想刷題,不想補題,突然想起昨天的training 3裏I題涉及到除法取模的問題,就來總結一下 首先對於模運算來說,是沒有對於除法的取模的(即沒有(a/b)%mod
HDU - 1576(費馬小定理求逆元)
math src typedef pow ble inpu show font type 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1576 A/B Time Limit: 1000/1000 MS (Java/Othe
拓展歐幾裏得求逆元與階乘逆元求法
未知數 不定方程 isp 歐幾裏得 void pow 現在 法國 space 目錄 什麽是逆元 如何求逆元 階乘逆元 本文章內,若無特殊說明,數字指的是整數,除法指的是整除。 什麽是逆元 我們稱\(a\)是\(b\)在模\(p\)情況下的逆元,則有\(a \times
(數論)簡單總結求逆元的幾種方法
element ssi 整數 data- xmlns als clas 歐幾裏德 class 逆元(Inverse element),如a?b≡1(modp),那麽a,b互為模p意義下的逆元,則p|(a/c-b*c)(即a/c與b*c同余)。 常用的求逆元方法有 1.費馬小
拓展尤拉定理求逆元以及費馬小定理求逆元的板子
//拓歐 void exgcd(long long a,long long b,long long &x,long long &y) { if(b == 0) { x = 1; d = a; y = 0; return ; } else { lon
求逆元求組合公式(有取餘)
https://blog.csdn.net/weixin_40149887/article/details/79861045 求解方法: 先算出n!%p、m!%p、(n-m)!%p,用fac[i]表示 i!%p 的值 因為組合數取模是(n!)/(m!(n-m)!)%p,因此需要計
求逆元
spa != class return template 擴展 temp div 返回 1 利用擴展歐幾裏得求解 // ax=1 mod(n) //返回-1表示不存在逆元 template<class T> T mod_reverse(T a,T n){
求逆元,逆元的意義
逆元 首先說明逆元的概念,類似於倒數的性質。 方程ax≡1(mod p),的解稱為a關於模p的逆,當gcd(a,p)==1(即a,p互質)時,方程有唯一解,否則無解。 對於一些題目會要求把結果MOD一個數,通常是一個較大的質數,對於加減乘法通過同餘定理可以直接
求逆元的3種方法
//擴充套件歐幾里得求逆元 //a*x=1(mod m)=>a*x+m*y=1 int extgcd(int a,int b,int &x,int &y){ int d=a; if(b!=0){ d=extgcd(b,a%