1. 程式人生 > 實用技巧 >來嘛~整理一下快速冪

來嘛~整理一下快速冪

我才發現我雖然學了這麼長時間的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 某個不知名的精分患者