快速幂的运用

        大一的时候挺后悔没学算法,现在要参加竞赛,慢慢学习算法,写一些自己学的东西。希望对你们有用~

快速幂算法:

      所谓的多次幂,其实是快速进行幂取模。公式表达为:ab%c。小数据直接暴力循环就可以解决,但参加竞赛一般情况下数据比较大,换言之,考的就是快速幂的运用。

算法:暴力循环(小数据)

快速幂的运用

     把ab的值赋值给一个变量,再进行取余,这种算法处理的数据太小。你会发现有很多地方可以优化,尽量步步取余!比如:运算之前进行a%c,每次运算都进行取余。

改进后:

快速幂的运用

    这些改变这是在数据的运算量上降低了,但运算的次数对于计算机来说还是非常庞大。而快速幂就是为了降低程序的运算次数。    

先说一个小例子:28=44=162=256。
举一个奇数幂的例子,更好地理解:213=2*212=2*163=2*16*
162=2*16*256 = 8192。

快速幂:

快速幂的运用

        在数值方面还是“步步取余”,防止溢出,在运算量方面折半进行计算。

        PS:“快速幂”的知识在比赛中一般属于前三题(中等偏下难度)