文章目录

  • 1 解释快速幂
  • 2 代码(这里就不考虑指数为小于0的情况了)
  • 3 下面是矩阵快速幂,区别只是底数换成了矩阵

1 解释快速幂

传统的幂运算,是对底数进行连乘,时间复杂度为o(n),例如:2^13 = 222……*2,连乘十三次。
利用指数的二进制,可以实现复杂度为o(logn)的幂运算。还是以2^13为例,13的二进制为1101,因此2的13次方可以分解成以下形式:

和13的二进制1101相对比,只要二进制为1的位,就有权重,权重为2^(i-1),i表示第几位,1101从右到左,依次为第1位,第2位,第3位,第4位。

下面的工作就是如何确定二进制中的哪一位为1,这里可以利用位运算中的&和>>运算。由于1的二进制除了第一位是1,其他的全是0,因此可以利用n&1是否为0来判断n的二进制的当前最低位是否为1,如果n&1等于0,说明当前n的最低位不为1。利用右移运算来逐位读取。
快速幂的代码如下:

2 代码(这里就不考虑指数为小于0的情况了)

python【数据结构与算法】快速幂and矩阵快速幂取模(看不懂你来打我)相关推荐

  1. python【数据结构与算法】内置函数enumerate(枚举) 函数(看不懂你来打我)

    文章目录 描述 语法 参数 返回值 实例 描述 enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. ...

  2. Python数据结构与算法(1.7)——算法分析

    Python数据结构与算法(1.7)--算法分析 0. 学习目标 1. 算法的设计要求 1.1 算法评价的标准 1.2 算法选择的原则 2. 算法效率分析 2.1 大 OOO 表示法 2.2 常见算法 ...

  3. Python 数据结构与算法——快排

    Python 数据结构与算法--选取算法(TopK) 如果说快速选取法所代表的是剪枝式的遍历操作--在递归树中找出一条通往第 k<script type="math/tex" ...

  4. Python数据结构与算法(1.1)——数据结构与算法导论

    Python数据结构与算法(1.1)--数据结构与算法导论 0. 学习目标 1. 数据结构概述 1.1 什么是数据结构 1.2 逻辑结构和物理结构 1.3 抽象数据类型 1.4 数据结构学习的必要性 ...

  5. 快速幂或者矩阵快速幂

    快速幂或者矩阵快速幂在算大指数次方时是很高效的,他的基本原理是二进制,下面的A可以是一个数也可以是一个矩阵(本文特指方阵),若是数就是快速幂算法,若是矩阵就是矩阵快速幂算法,用c++只需把矩阵设成一个 ...

  6. 二分幂,快速幂,矩阵快速幂,快速乘

    前言 二分幂,快速幂,矩阵快速幂在算大指数次方时是很高效的. 求 a^n 的值是多少?n是1到10^18次方的一个整数. 求一个数的n次方,朴素的算法就是直接for循环,一遍一遍的乘,a*a*a*a* ...

  7. [FreeCodeCamp笔记] Python 数据结构和算法1 二分搜索 Binary Search

    我以前学过数据结构和算法(data structure and algorithms. 现在普遍简称DSA),当时用的Robert Sedgewick的coursera课程.这位大神写的<算法( ...

  8. 视频教程-Python数据结构与算法面试(上)-Python

    Python数据结构与算法面试(上) 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲师,制作视频课程超过1 ...

  9. 数据结构与算法之转圈打印矩阵和旋转正方形矩阵

    数据结构与算法之转圈打印矩阵和旋转正方形矩阵 目录 转圈打印矩阵 旋转正方形矩阵 1. 转圈打印矩阵 题目描述 代码实现 public class Code_PrintMatrixSpiralOrde ...

  10. Python天天美味(32) - python数据结构与算法之堆排序

    1. 选择排序 选择排序原理是先选出最小的数,与第一个数交换,然后从第二个数开始再选择最小的数与第二个数交换,-- def selection_sort(data):     for i in ran ...

最新文章

  1. day9 线程与进程、队列
  2. CSS(二)属性--文本设置
  3. 百度地图 app 点击事件无效、不触发 解决方案
  4. 前端趋势榜:上周最 yyds 的 10 大前端项目 - 211101
  5. mysql5.0锁定用户_MySQL系列(五)---总结MySQL中的锁
  6. 好老婆的作息时间(做女人真悲哀 ……)
  7. Qt工作笔记-代理及自定义委托,实现开关功能
  8. ActiveMQ 即时通讯服务 入門指南及淺析
  9. OSPF基本概念单与区域配置
  10. 关于SQL SERVER 2000在Windows Server 2003下不能使用的问题
  11. Latex所有常用数学符号整理
  12. SQL2014 MySQL_SQL Server 2014 Express 官方免费版下载
  13. EI/scopus推荐-智能交通与智慧城市会议
  14. 台式计算机设置热点,台式机怎么设置无线热点
  15. 游戏开发设计模式:命令模式
  16. STM32系统时钟详解
  17. 50种黑白人像摄影调色效果lr预设
  18. 一款非常不错的键盘改建神器
  19. 【洛谷题解/TJOI2007】P3853路标设置
  20. 【操作系统】alios

热门文章

  1. The NVIDIA driver on your system is too old
  2. Can't connect to HTTPS URL because the SSL module is not available
  3. 在 win10 环境下,设置自己写的 程序 开机自动 启动的方法
  4. 异常: cv::Exception,位于内存位置 0x00000059E67CE590 处。
  5. 目标检测 RCNN算法详解
  6. matlab 摄像头操作
  7. 【9】青龙面板系列教程之互助规则的配置
  8. 五、redis和关系型数据库如何配合使用
  9. 十三、limit 的使用
  10. 瞬间教你学会使用java中list的retainAll方法