快速冪的簡單解釋

2021-07-22 03:16:26 字數 396 閱讀 3007

快速冪演算法,顧名思義就是求冪時速度很快(廢話

看了很多部落格裡的解釋,都說得很玄奧……其實快速冪很容易解釋的。

比如求3的20次冪,一般我們會用迴圈乘法來求,也就是需要迴圈20次。

但是再想想,3^20 = 9^10,這樣只需要迴圈10次了。繼續,9^10 = 81^5。

這裡似乎進行不下去了,其實還可以繼續,81^5 = 81*81^4 = 81*6561^2 = 81*43046721

數一下,這個步驟只有五步。dec(20)=bin(10100),即:冪(bin)有幾位,迴圈次數就是幾。

另外,判斷乙個數的奇偶性,不但可以使用mod 2,也可以使用 &1。他們只是在負整數部分略有不同罷了,一般求正整數冪 &1 的效率可以更高。

理解了這些,寫乙個快速冪演算法就很容易了。

簡單的快速冪

題目大意 輸入b,p,k的值,求b p mod k的值。其中b,p,k k為長整型數。輸入輸出格式 輸入格式 三個整數b,p,k.輸出格式 輸出 b p mod k s s為運算結果 例如 輸入樣例 1 2 10 9 輸出樣例 1 2 10 mod 9 7 輸入樣例 2 4523 59 7762 輸...

簡單快速冪

對於求乙個數a的n次冪,我們第一想法就是呼叫包含在標頭檔案cmath或math.h標頭檔案下的pow a,n 函式,為了演算法看起來簡單用int代替大數模版。最簡單的實現就是用乙個迴圈和乙個變數,不斷用變數乘上底數,當然,這樣做的效率並不高o n include using namespace st...

簡單快速冪

本篇文章將介紹關於快速冪的知識,將會對後面的學習有所幫助。p1226傳送門 如何讓計算機計算出 a b bmod p 第一種演算法 樸實無華的 o n 演算法 long long qpow int a,int b,int p return ans 當然,以上解法肯定正確,但當 b geq 10 8 ...