快速冪(quick power,以下簡稱qpw)是math.h
或cmath
裡的內建函式pow
的公升級版(只不過是比pow
快了一些)
qpw函式需要實現以下的條件:
宣告ans變數,賦值為1
如果指數為奇數,ans乘上原數
原數=原數的平方,指數除以2
如果b==0,返回ans,否則重複執行2,3步
注意取值範圍以及是否需要求模
先寫出**:
long
long
qpw(
long
long x,
long
long y)
return ans;
}
在main函式裡呼叫qpm(2, 10)
,結果為1024,說明沒有錯誤
稍加優化:
long
long
qpw(
long
long x,
long
long y)
return ans;
}
針對需要求模的情況:
// x為原數,y為指數,m為用來模的數
intqpw
(long
long x,
long
long y,
int m)
return ans;
}
在程式中呼叫qpw(2, 10, 500)
,得到24,說明正確 演算法手記之快速冪
快速冪是一種快速求出 ab 的值的演算法,複雜度為o logn 而一般的樸素演算法是由乙個for迴圈慢慢算,算完需要o n 的時間,這顯然不符合yxh老師高山流水般的思路,所以我們需要乙個高效的演算法來解決這個問題。快速冪的原理 假設要求211的值,指數11可以使用二進位制的形式寫成11 20 21...
初學演算法之快速冪
目前遇到需要用快速冪的題,大多都是與取模有關且直接乘會爆資料的題。因此,在講快速冪之前,我們得先了解下取模運算。基本性質 若p a b 則a b p 例如 11 4 7 18 4 7 a p b p 意味a b p 對稱性 a b p 等價於b a p 傳遞性 若a b p 且b c p 則a c ...
C 演算法篇 快速冪
讓我們先來思考乙個問題 7的10次方,怎樣算比較快?方法1 最樸素的想法,7 7 49,49 7 343,一步一步算,共進行了9次乘法。這樣算無疑太慢了,尤其對計算機的cpu而言,每次運算只乘上乙個個位數,無疑太屈才了。這時我們想到,也許可以拆分問題。方法2 先算7的5次方,即7 7 7 7 7,再...