快速冪的運用

F_Yong發表於2018-04-12

        大一的時候挺後悔沒學演算法,現在要參加競賽,慢慢學習演算法,寫一些自己學的東西。希望對你們有用~

快速冪演算法:

      所謂的多次冪,其實是快速進行冪取模。公式表達為:ab%c。小資料直接暴力迴圈就可以解決,但參加競賽一般情況下資料比較大,換言之,考的就是快速冪的運用。

演算法:暴力迴圈(小資料)

     把ab的值賦值給一個變數,再進行取餘,這種演算法處理的資料太小。你會發現有很多地方可以優化,儘量步步取餘!比如:運算之前進行a%c,每次運算都進行取餘。

改進後:


    這些改變這是在資料的運算量上降低了,但運算的次數對於計算機來說還是非常龐大。而快速冪就是為了降低程式的運算次數。    

先說一個小例子:28=44=162=256。
舉一個奇數冪的例子,更好地理解:213=2*212=2*163=2*16*
162=2*16*256 = 8192。

快速冪:


        在數值方面還是“步步取餘”,防止溢位,在運算量方面折半進行計算。

        PS:“快速冪”的知識在比賽中一般屬於前三題(中等偏下難度)

相關文章