題目描述
給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。
一開始最簡單的思路是,用乙個while迴圈直接乘出結果,太簡單**就不貼了,複雜度是o(n)。
發現有更快的演算法,叫快速冪,複雜度為o(lgn)。
**:
public class solution
else if(n == 0)
while(n != 0)
base = base * base;
n = n>>1;
}if(exponent < 0)
return result;
}}
原理:
a^bb為偶數:a^b = a^(b/2) * a ^(b/2) = (a2)(b/2)
b為奇數:a^b = a^((b-1)/2) * a^((b-1)/2) * a = (a2)(b/2) * a
快速冪也叫快速冪取模演算法,是一種高效的指數求模演算法。
只要在我們上述原理後面加上%n就是就指數模n的結果了。
快速冪(整數快速冪 矩陣快速冪)
1 整數快速冪 例如求x 8 就是x x x x x x x x 正常的運算方式是,x的值乙個個往上乘上去,乘法運算執行7次 x x x x x x x x 也可以採用這種運算方式,先進行乘法得到x 2再對x 2進行三次乘法。這種運算要明顯比第一種情況要快 所以對於整數快速冪,也是結合了這種思想 x...
快速冪計算(整數快速冪 矩陣快速冪)
快速冪計算 樸素演算法實現 1 ll get pow ll x,ll n 這裡的n要求不小於0,如果n小於0則令n n,並且最終返回1.0 ans即可 29 return ans 10 快速冪演算法 原理 二分 假設我們現在要計算pow x,n 那麼有當n為偶數時pow x,n pow x x,n ...
整數快速冪以及大數取模快速冪運算
最近寫到快速冪的演算法題,就比如313,按照之前的做法無非不是寫個迴圈模擬計算,對於指數較小的情況的確可以完成,倘若指數過於大,程式會超時,此時就需要運用到快速冪的方法 正常情況下的計算時間複雜程度為o n a n a a a a n個a 但a和n過於大時我們可以換種思路,我們知道a n a m a...