演算法:數值的整數次方

題目:

實現 pow(x, n) ,即計算 x 的 n 次冪函式。不得使用庫函式,同時不需要考慮大數問題。

示例:

輸入:x = 2。00000, n = 10輸出:1024。00000

思路:

快速冪方法:分析n的二進位制表示式,進行公示轉換:

演算法:數值的整數次方

注意:n可能是負數,所以在處理前先取正數;INT_MIN取正數可能溢位,所以先把n轉成long再取正數。

程式碼:

class Solution {public: double myPow(double x, int n) { double result=1; long m=abs((long)n); for(int i=0; i<32; i++) { if(i>0) m=m>>1; int k=m&1; if(i==0) x=x; else x=x*x; if(k==1) result*=x; } if(n<0) result = 1/result; return result; }};