关于快速幂

关于快速幂

这次学习了下快速幂,所以来总结一下

快速幂,从字面意思就知道是快速的算出幂次方

我们先看试题a^b%m(快速幂取模)

                                     

a^b%m呢,如果靠死算的话不仅慢而且就连long long也会爆掉

所以就需要靠数学来总结个简单点的方法出来

下面是公式

                                     

这个公式一来就觉得很神奇(看不懂啊)还好,有推倒过程

                     

具体点就是

a*b=(a1*m*b1*m)+(a1*m*b2)+(a2*b1*m)+(a2*b2)

又因为要mod m

所以带m的都为0

所以最后只剩下a2*b2

所以a*b%m=a2*b2%m

又因为a2=a%m,b2=b%m

所以最终就变为----->a*b%m=[(a%m)*(b%m)]%m

于是便有了

                         

(然而这次是真的看不懂了,咳咳)

这是这个试题的方法

代码的话

 

试题看完了,就是真正的快速幂了

核心思想

                     

代码的话

                         

真正的快速幂也知道了,接下来就看看怎么让上面的快速幂取模更快吧

             

这样就完工了︿( ̄︶ ̄)︿

Over

posted @ 2018-06-30 16:05  Morning_Glory  阅读(190)  评论(0编辑  收藏  举报
//