快速模乘與快速模冪 模板

2021-09-26 20:14:30 字數 894 閱讀 7915

時間複雜度:

快速乘、普通快速冪o

(log⁡2

n)

o(\log_2)

o(log2​n

),使用快速乘的快速冪o

(log⁡2

log⁡2m

ax_v

al)=

o(

log⁡2n

×log⁡2

mod)

o(\log_2 \times \log_2)=o(\log_2 \times \log_2)

o(log2​n

×log2​

max_

val)

=o(log2​

n×log2​m

od)

struct mod_sys

// 返回a在[0,mod)內標準等價的數,即數學意義上的a%mod

inline ll to_std

(ll a)

// 計算數學意義上的a*n%mod

ll mlt

(ll a, ll n)

return

(a+t)

%mod;

// now n = 1

}// 計算數學意義上的a^n%mod 輸入應當a,n>=0

ll pow

(ll a, ll n)

return a*t%mod;

// now n = 1

}// 計算數學意義上的a^n%mod 輸入應當a,n>=0

// 此版本使用quick_mlt防止相乘爆ll

ll pow_v2

(ll a, ll n)

return

mlt(t,a)

;// now n = 1}}

;

快速乘 快速冪 取模

快速冪 傳統的求冪演算法時間複雜度非常高 為o 指數n 因為當指數n非常大的時候,需要執行的迴圈操作次數也非常大,而快速冪能幫我們以相對更少的時間算出指數非常大的冪。快速乘加法比乘法快。可以用較多的加法來取代乘法來減少時間複雜度 乘法分配律?見 絕不承認自己懶 include define ll l...

照看小貓(快速乘 快速冪取模)

在乙個風和日麗的午後,少佐給薇爾莉特伊芙嘉登安排了乙個任務。任務大致是這樣的,接下來的一周,薇爾莉特需要照顧 n 只小貓咪。為了方便管理這n 只貓咪,薇爾莉特準備給每只貓咪取乙個獨一無二的名字。取名字要徵求貓咪本咪的同意才可以。但這些貓咪都非常有個性,絕不接受很長的名字。現給出每只貓咪所能容忍名字的...

快速冪與快速冪取模

快速冪顧名思義,就是快速算某個數的多少次冪。其時間複雜度為 o log?n 與樸素的o n 相比效率有了極大的提高。而快速冪取模就是對冪運算後結果進行取模運算。在程式設計過程中可能會遇到要求乙個很大的數的模,為了得到乙個能計算更大範圍,速度更快的演算法,快速冪取模演算法應運而生。一.計算冪,計算a ...