C 演算法之 快速冪

2021-10-07 09:04:59 字數 840 閱讀 7471

快速冪(quick power,以下簡稱qpw)是math.hcmath裡的內建函式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,再...