快速幂

作者: 八菜冰 | 来源:发表于2019-05-29 23:39 被阅读0次

a^n,将n表示成2的幂次和,即n = c_0 +c_12+c_22^2+...+c_n2^n
而求a^n时,只需求a^(c_0) a^(c_12)a^(c_22^2)...a^(c_n2^n)
换句话说就是将n转为二进制,例如5转为101,而101就代表c_2c_1c_0,当c为0时,a^(c2^n)为1,因此,我们只考虑c不为0的项,即求出所有c,当c不为0时,求a^(c2^n)
步骤:
对a逐次平方(由解式可以看出,乘式中每一项因子都是a的逐次平方),同时我们还需要确认c参数,即n式对2求余,确认c_0,再除以2,并向下取整,从而消去c_0,并使多项式的次数下降1,且暴露出c_1;重复进行,直至n式除以2为0,即除尽。

    def myPow(self, a, n):
        # write your code here
        ans = 1
        if n == 0:
            return 1
        if n<0:
            a = 1/a
            n = -n
        while n!=0:
            if n%2 == 1:
                ans *= a
            a *= a
            n = int(n/2)
        return ans

解释的比较乱。。也比较数学

相关文章

  • (矩阵)快速幂

    快速乘法: 快速幂: 矩阵快速幂:

  • 快速幂

    常规求幂 快速求幂(一般) 快速求幂 (递归) 快速求幂(位运算) 快速求幂(位运算,更简洁)

  • 快速幂,矩阵快速幂

    快速幂:复杂度为logn,比普通的n快了很多了. 原理 : 实现代码如下:(位运算,简单,简洁) 矩阵快速幂: 所...

  • 模板 | 整数快速幂 & 快速幂取模

    快速幂: 所谓的快速幂,其目的是为了快速求幂,将时间复杂度从朴素算法的降到。 假如现在要求 ,按照朴素算法,就是将...

  • 常用算法

    快速幂 Fast Power 快速取模 FastMode 快速排序 FastSort

  • 2018-07-09-快速幂

    参考:算法学习 - 快速幂和矩阵快速幂(复杂度Olog(n))C++实现 - CSDN博客

  • 快速幂

    对于一个 , 我们可以把它分为 如果化为二进制,则底数为a,指数为0或者1乘以2的次方的权重。我们不妨举例一个例子...

  • 快速幂

    (快速幂)计算A^B的最后x位数 题目描述 请编程计算A^B结果的最后若干位表示的整数. 输入描述 输入数据包含3...

  • 快速幂

    今天的内容是快速幂,是编程中求幂的得力能手,一定要背下来哦。注意:本篇对三目运算符做了一定的介绍。如果已对三目运算...

  • 快速幂

    快速幂用于快速求解a的b次方。将b分解为若干个指数不重复的2的次幂的和,c为0或1。其中时间复杂度

网友评论

      本文标题:快速幂

      本文链接:https://www.haomeiwen.com/subject/exndtctx.html