來嘛~整理一下快速冪
阿新 • • 發佈:2020-09-16
我才發現我雖然學了這麼長時間的OI,我居然連快速冪是什麼都不知道。
以至於當自己卡在“完美數”那道題,而後去看題解的時候。
#####我發現了一個我雖然聽過無數次但是從來不會寫的演算法。
##快速冪
於是我飛快地baidu了一下。
找到了一篇炒雞棒噠部落格。
不得不說那篇部落格寫的非常的淺顯易懂。
於是乎,
我只用了不到10分鐘就完全搞懂了快速冪。
正好嘛~過來寫個部落格擴充一下自己的部落格。
首先先描述一下這個快速冪演算法的思路:
我們都知道,如果想要求一個冪,
我們最普通的程式碼需要的是迴圈指數次乘積操作。
而快速冪演算法能夠大大優化時間的複雜度。
我們可以將所要求的指數減半,分成兩個底數的平方的指數的一般次冪。
但是,看到這裡顯然有的人就會提出疑問:
如果我的指數是奇數怎麼解決呢?
顯然-1即可。
long long fastPower(long long base,long long power){
lont lont result=1;
while(power>0){
if(power&1){
result=result*base%1000;
}
power>>=1;
base=(base*base)%1000;
}
return result;
}
copy的程式碼如上面,
但是那個並不是正經的快速冪函式,
只是一道十分普通的題的最簡便寫法。
僅此而已。
所以真正的快速冪還是要自己寫的。
嗯,就這樣。
我似乎非常成功的水了一篇部落格。
rua
——by 某個不知名的精分患者