【数学】幂运算与快速幂取余
一、幂运算
1.幂的定义:
的幂就是多个
相乘,记作
,表示
的
次幂,即
个
相乘,我们把
叫做底数,
叫做指数。
2.幂的运算:
我们可以用公式将幂运算进行简化,公式如下:
3.求幂方法:
(1). Python,C++,Java都有专门求幂的系统函数,用法如下:
python
import math
math.pow(底数, 指数)
C++
#include <cmath>
int main() {pow(底数, 指数);
}
Java
public class Main {public static void main(String[] args) {Math.pow(底数, 指数);}
}
(2).快速幂
由得
,所以指数为奇数是要先把奇数转化为偶数,在进行乘方,算法时间复杂度
。
具体代码如下:
python:
def quickPow(base, n):ans = 1while n > 1:if n % 2 == 1:ans *= basen //= 2base **= 2return ans * base
C++
int quickPow(int base, int n) {int ans = 1;while (n > 1) {if (n & 1) ans *= base;n >>= 2, base *= base;}return ans * base;
}
二、快速幂取余
1.和差积的模运算:
2.快速幂取余:
一般来说,幂的值很大,题目会让你输出模下的值,这是我们要用快速幂取余,我们只需稍微改动快速幂的代码即可实现。
python
def quickPow(base, n, p):base %= pans = 1while n > 1:if n % 2 == 1:ans = ans * base % pn //= 2base **= 2base %= preturn ans * base % p
C++
int quickPow(int base, int n, int p) {long long ans = 1;while (n > 1) {if (n & 1) ans = ans * base % p;n /= 2, base = base * base % p;}return ans * base % p;
}
【数学】幂运算与快速幂取余相关推荐
- 幂运算(快速幂)Java实现
幂运算(快速幂)Java实现 暴力幂运算 Math类下的pow(double a, double b) 快速幂(涉及位运算) 测试 暴力幂运算 public static long pow1(int ...
- 二进制,位运算,快速幂
二进制位运算 一,前言 二,取整运算 三,七种位运算 1,&:与运算,遇0则0 2,|: 或运算,遇1则1. 3,~:取反,0变1,1变0 4,^:异或运算 5, <<<&l ...
- mysql 矩阵运算_HDU 2276 Kiki amp; Little Kiki 2 (位运算+矩阵快速幂)
HDU 2276 Kiki Little Kiki 2 (位运算矩阵快速幂) ACM 题目地址:HDU 2276 Kiki Little Kiki 2 题意 : 一排灯,开关状态已知,每过一秒:第i个 ...
- HDU 2276 Kiki Little Kiki 2 (位运算+矩阵快速幂)
HDU 2276 Kiki & Little Kiki 2 (位运算+矩阵快速幂) ACM 题目地址:HDU 2276 Kiki & Little Kiki 2 题意: 一排灯,开关 ...
- 二分幂,快速幂,矩阵快速幂,快速乘
前言 二分幂,快速幂,矩阵快速幂在算大指数次方时是很高效的. 求 a^n 的值是多少?n是1到10^18次方的一个整数. 求一个数的n次方,朴素的算法就是直接for循环,一遍一遍的乘,a*a*a*a* ...
- 快速幂或者矩阵快速幂
快速幂或者矩阵快速幂在算大指数次方时是很高效的,他的基本原理是二进制,下面的A可以是一个数也可以是一个矩阵(本文特指方阵),若是数就是快速幂算法,若是矩阵就是矩阵快速幂算法,用c++只需把矩阵设成一个 ...
- 数论-快速幂、矩阵快速幂、慢速乘
文章目录 快速幂 矩阵快速幂 慢速乘 例题 HDU-2817 HDU-3117 XUJC-1395 快速幂 首先幂运算 a n a^n an就是 n n n个 a a a相乘,我们可以直接调用库函数 ...
- 快速幂和矩阵快速幂详解+模板
1.快速幂 一般的,我们都知道求只需要连续乘3次2就能得到,那么等于多少呢?其实这个一很简单,不就是13个2相乘吗,连续乘13次2就行了.那么,呢? 是不是要连续乘100次.1000次,我们将这类问题 ...
- 数论(二)快速幂 (矩阵快速幂)等比数列求和 最大公因数和最小公倍数
快速幂 1.快速幂用于快速计算a的b次方,时间复杂度是O(log2b) 2.用于a和b比较大小的情况,常用的快速幂是带模快速幂 3.分析一个例子: 3 15=? 15=(1111)2 3e1 * ...
最新文章
- 虚拟机管理你的服务器,全面解析VMware的虚拟机管理解决方案
- vs2019 MFC 中 cannot open include file 'afxres.h' 问题解决方法
- Hibernate 中配置属性详解(hibernate.properties)
- 青少年蓝桥杯_2020_steam考试_初级组_第三题
- cfree运行程序错误的原因_ARM Cortex-M 系列 MCU错误代码自动追踪库的使用分享
- 使用VMware安装CentOS7详请(自己做过测试)
- js获取字符串最后一个字符代码
- printf 地址_C程序显示主机名和IP地址
- 冒泡排序 和 归并排序
- __attribute__((section(name))) study again
- Angular在FormGroup中使用ngModel失效报错问题的解决办法
- 从SDE库文件手工删除SDE图层(转载)
- MFC树型控件 搜索并展开高亮指定树节点
- vue组件,通过props父组件给子组件传值,WTF, 子组件报错undefined???
- 阿里巴巴正式开源全球化OpenMessaging和ApsaraCache项目
- 10.27大视野月赛翻车实况
- Buffer的基本用法
- iphone 如何运行android,iPhone成功运行Android,厉害~
- Manjaro安装教程及安装后操作
- 斗战神服务器正在维护6,斗战神什么时候服务器数据互通_斗战神1月6日、8日服务器数据互通公告_快吧游戏...
热门文章
- linux(ubuntu)上使用sdkman快速安装java环境,maven,gradle
- 不解“安全态势感知”为何物?
- 2019奥林匹克计算机竞赛试题,2019-2020年小学数学奥林匹克竞赛试题及答案三年级...
- canon老的一体机在win10上无法直接安装成功
- 懂得拥有也要学会放弃
- depot_tools在windows上用遇到的问题和RTC编译出错
- C++ Primer Plus(第6版)读书笔记--c++自定义函数
- html中div被挤下来,移动端布局,底部的div被挤下去,麻烦帮看看
- Python的egg包
- Java核心技术 卷1-总结-18