時間複雜度:
快速乘、普通快速冪o
(log2
n)
o(\log_2)
o(log2n
),使用快速乘的快速冪o
(log2
n×
log2m
ax_v
al)=
o(
log2n
×log2
mod)
o(\log_2 \times \log_2)=o(\log_2 \times \log_2)
o(log2n
×log2
max_
val)
=o(log2
n×log2m
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 ...