python【数据结构与算法】快速幂and矩阵快速幂取模(看不懂你来打我)
文章目录
- 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矩阵快速幂取模(看不懂你来打我)相关推荐
- python【数据结构与算法】内置函数enumerate(枚举) 函数(看不懂你来打我)
文章目录 描述 语法 参数 返回值 实例 描述 enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. ...
- Python数据结构与算法(1.7)——算法分析
Python数据结构与算法(1.7)--算法分析 0. 学习目标 1. 算法的设计要求 1.1 算法评价的标准 1.2 算法选择的原则 2. 算法效率分析 2.1 大 OOO 表示法 2.2 常见算法 ...
- Python 数据结构与算法——快排
Python 数据结构与算法--选取算法(TopK) 如果说快速选取法所代表的是剪枝式的遍历操作--在递归树中找出一条通往第 k<script type="math/tex" ...
- Python数据结构与算法(1.1)——数据结构与算法导论
Python数据结构与算法(1.1)--数据结构与算法导论 0. 学习目标 1. 数据结构概述 1.1 什么是数据结构 1.2 逻辑结构和物理结构 1.3 抽象数据类型 1.4 数据结构学习的必要性 ...
- 快速幂或者矩阵快速幂
快速幂或者矩阵快速幂在算大指数次方时是很高效的,他的基本原理是二进制,下面的A可以是一个数也可以是一个矩阵(本文特指方阵),若是数就是快速幂算法,若是矩阵就是矩阵快速幂算法,用c++只需把矩阵设成一个 ...
- 二分幂,快速幂,矩阵快速幂,快速乘
前言 二分幂,快速幂,矩阵快速幂在算大指数次方时是很高效的. 求 a^n 的值是多少?n是1到10^18次方的一个整数. 求一个数的n次方,朴素的算法就是直接for循环,一遍一遍的乘,a*a*a*a* ...
- [FreeCodeCamp笔记] Python 数据结构和算法1 二分搜索 Binary Search
我以前学过数据结构和算法(data structure and algorithms. 现在普遍简称DSA),当时用的Robert Sedgewick的coursera课程.这位大神写的<算法( ...
- 视频教程-Python数据结构与算法面试(上)-Python
Python数据结构与算法面试(上) 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲师,制作视频课程超过1 ...
- 数据结构与算法之转圈打印矩阵和旋转正方形矩阵
数据结构与算法之转圈打印矩阵和旋转正方形矩阵 目录 转圈打印矩阵 旋转正方形矩阵 1. 转圈打印矩阵 题目描述 代码实现 public class Code_PrintMatrixSpiralOrde ...
- Python天天美味(32) - python数据结构与算法之堆排序
1. 选择排序 选择排序原理是先选出最小的数,与第一个数交换,然后从第二个数开始再选择最小的数与第二个数交换,-- def selection_sort(data): for i in ran ...
最新文章
- day9 线程与进程、队列
- CSS(二)属性--文本设置
- 百度地图 app 点击事件无效、不触发 解决方案
- 前端趋势榜:上周最 yyds 的 10 大前端项目 - 211101
- mysql5.0锁定用户_MySQL系列(五)---总结MySQL中的锁
- 好老婆的作息时间(做女人真悲哀 ……)
- Qt工作笔记-代理及自定义委托,实现开关功能
- ActiveMQ 即时通讯服务 入門指南及淺析
- OSPF基本概念单与区域配置
- 关于SQL SERVER 2000在Windows Server 2003下不能使用的问题
- Latex所有常用数学符号整理
- SQL2014 MySQL_SQL Server 2014 Express 官方免费版下载
- EI/scopus推荐-智能交通与智慧城市会议
- 台式计算机设置热点,台式机怎么设置无线热点
- 游戏开发设计模式:命令模式
- STM32系统时钟详解
- 50种黑白人像摄影调色效果lr预设
- 一款非常不错的键盘改建神器
- 【洛谷题解/TJOI2007】P3853路标设置
- 【操作系统】alios
热门文章
- The NVIDIA driver on your system is too old
- Can't connect to HTTPS URL because the SSL module is not available
- 在 win10 环境下,设置自己写的 程序 开机自动 启动的方法
- 异常: cv::Exception,位于内存位置 0x00000059E67CE590 处。
- 目标检测 RCNN算法详解
- matlab 摄像头操作
- 【9】青龙面板系列教程之互助规则的配置
- 五、redis和关系型数据库如何配合使用
- 十三、limit 的使用
- 瞬间教你学会使用java中list的retainAll方法