算法题每日一练---第60天:快速幂

简介: 快速幂是一种简单而有效的小算法。

1.png

一、前言


快速幂Exponentiation by squaring,平方求幂)是一种简单而有效的小算法,它可以公式的时间复杂度计算乘方。快速幂不仅本身非常常见,而且很多算法也都会用到快速幂。


二、问题分析

让我们先来思考一个问题:7的11次方,怎样算比较快?


1.普通解法

11次方不就是,11个7相乘吗?

这种算法我们需要运算11次,但这种算法比较耗时。


2.快速幂

如果我们将11转换成二进制就是:1011

7^11 =7^87^27^1


是不是和11的二进制彼此对应,当二进制为0是,跳过。


当二进制为1时,次方等于当前二进制1对应的十进制数字,快速幂只需计算3次。

下面以计算n的m次方为例:

定义base作为当前二进制为1对应的次方,ans为最终的结果值m向右移位,如果当前位是1,那么ans=ans*base;
base=base*base,因为要计算二进制对应的十位数当m为0,输出结果


三、编码实现


typedeflonglongll;//定义long long型llquick_pow(lln,llm)//计算n的m次方{
llans=1,base=n;//初始化while(m!=0)//m不为0    {
if(m&1)//当前为1ans=ans*base;//相乘base=base*base;//计数m=m>>1;//向右移位    }
returnans;//输出结果}

四、总结与提高

了解了快速幂的用法之后,那就来做两道题巩固一下知识点吧。


相关文章
|
2月前
|
算法 Java 程序员
【算法每日一练及解题思路】有n级台阶,一次只能上1级或2级,共有多少种走法?
本文深入解析了“爬楼梯问题”,探讨了递归与迭代两种解法,并提供了Java代码实现。通过分析问题本质,帮助读者理解动态规划技巧,提高解决实际编程问题的能力。关键词:Java, 算法, 动态规划, 爬楼梯问题, 递归, 迭代。
119 0
|
7月前
|
算法
|
7月前
|
人工智能 Kubernetes 算法
算法常见技巧 -快速幂及其相关应用
算法常见技巧 -快速幂及其相关应用
|
算法
快速幂算法
快速幂算法
106 0
|
算法
快速幂算法
什么是快速幂呢?就是更快速的计算幂运算。
6586 0
|
算法 Python
快速幂算法的实现
快速幂算法的实现
快速幂算法的实现
|
机器学习/深度学习 算法 JavaScript
【算法日记】快速幂:关于我知道答案却做不出来这档事
LeetCode第330场周赛,直接卡在了第二题😭,掉大分,学到一手快速幂。本文包含以下内容:快速幂,快速幂取余。
172 0
|
算法
算法题每日一练---第78天:二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target
200 1
算法题每日一练---第78天:二分查找
|
存储 算法