【快速幂】-迭代法:详解

news2024/11/28 7:47:11

何为快速幂?

我们经常会计算:x^{n}STL中有自带的pow函数如果当n很大的时候,那么一定会TLE。

因此,我们需要另一种求x^{n}值的方法:快速幂!

快速幂有两种做法:1:递归        2:迭代                                ps:我目前只知道有两种...(蒟蒻..)

这里我们讲的是迭代这种方法:

我们以x^{77}进行分析:

注意:指数前的“+”,表示该指数是由上一个指数翻倍+1后得到的。

(相当于:x^{3}=(x*x)*x=(x^{1})^{2}*x,3是由1翻倍后+1得到的)

在这个过程中:我们从左往右进行演变,很难发现规律。因为在某一过程中,不仅是指数翻倍,而且翻倍后还加了1.因此我们选择从右往左进行演变。

我们把这些贡献值相乘起来会得到:x*x^{4}*x^{8}*x^{64}=x^{77}

看到这里,可能大家还是有点懵,但是接下来各位一定会豁然开朗。

我相信某些读者应该想到了:在相乘的过程中,指数都是2的倍数,因此我们可以试着用二进制来表示表示。

结果我们发现:77的二进制:1001101

正好依次对应指数值:2^{1}=2      2^{2}=4     2^{3}=8    2^{6}=64

因此指数我们可以拆分为:

 

即:

 

代码:

int quickpow(int x,int n){//n为指数
	int ans=1;//记录答案
	while(n){//判断指数
		if(n&1) ans*=x;//如果指数的最低位为1,则进行累计操作(相当于乘法过程的乘)
		x*=x;//每移一位,相当于x^2,即:x*=x(翻倍)
        n>>=1;//判断下一位
	}
	return ans;
}

//这段代码没有考虑溢出的问题:
//Mod=1e9+7
//解决这个问题也很简单:在ans*=x的后面紧接一个取余操作即可:ans%=Mod,在x*=x的后面紧接一句:x%=Mod即可  

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/626776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谷歌云 | 宣布跨云互连:无缝连接到您的所有云

【本文由Cloud Ace整理发布,Cloud Ace 是谷歌云全球战略合作伙伴,拥有 300 多名工程师,也是谷歌最高级别合作伙伴,多次获得 Google Cloud 合作伙伴奖。作为谷歌托管服务商,我们提供谷歌云、谷歌地图、谷歌办公套件、谷…

1 软件测试基本概念

文章目录 课程目标1. 入门前的7个基础问题2. 软件测试基本概念2.1 需求的概念2.1.1需求的基本概念2.1.2 从软件测试人员角度看需求2.1.3 为什么需求对软件测试人员如此重要?2.1.4 如何才可以深入理解被测试软件的需求 2.2 bug的概念(了解)2.3测试用例的概念2.3.1 概…

AI读心术

近期,德克萨斯大学奥斯汀分校的神经科学家们展开了一场「AI」实验,利用人工智能聊天机器人ChatGPT,将大脑活动转化为文字信息。 参与实验的志愿者,在进行长达20小时的「训练」后,成功被「AI」识别出正在进行的活动。按…

portraiture宿主插件最新v4中文版本下载及使用教程

自拍怎么可以不修图呢?如果要修图的话,磨皮就是其中非常重要的一环。皮肤看起来细腻光滑了,整个人的颜值都会瞬间拉高。下面就让我们介绍一下磨皮用什么软件好用,什么软件可以手动磨皮的相关内容。portraiture是ps人像修图中常用的…

喜报!恭喜知了堂学员成功通过CISP-PTE证书考试

有人说,大学可以不谈恋爱,但一定要考证。 考证,是大学校园生活的关键一环。充分利用在校时间为后期就业提前储备优势,毕业后如果从事IT领域,证书就是一个高含金量的专业认证,尤其是网络安全行业&#xff0…

干货|SpringBoot-Maven与Gradle多模块搭建

比较熟悉的模式是SpringbootMaven多模块的组织方式,由于近期Gradle势力很猛,据Gradle官网给出的5种压测场景的数据来看,Gradle的处理性能确实比Maven快,所以就来体验一下Gradle怎么做多模块搭建和各种依赖的引入和查看。 对Gradl…

【unity】燧光MR设备接入极简教程

官网说明文档: https://doc.ximmerse.com/sdkconf/unityxrsdk/index.html 一、环境准备 1、Unity环境准备 配置adb环境 官网下载:https://developer.android.google.cn/studio/releases/platform-tools 找到SDK Platform-Tools下载 参照 此教程 配置ad…

vulnhub dc-9

1.信息搜集 端口 80 20 filter 存活ip 172.16.1.65 2.访问网站进行信息搜集 cms staff 寻找漏洞 登录处尝试弱口令失败,尝试sql失败 search处sql注入 3.sqlmap跑用户名和密码 注意这题两个库的用户名和密码都需要 UserDetails,Users search处是post传参&…

trace clock structure的若干方法

这里分享几个trace clock structure的方法,各有特点。 1)report_clock_qor -to FF/CK -clock $clk_name -type structure 报告的结果与innovus的clock structure报告类似,如下示例。 (H) clock_root_name # sdc中的root name (0) cts_buf: A-> Y [REF: XX/BUF_XX] [Lo…

【Android开发基础】说说模块设计(下拉刷新、图片查看、布局设计)

文章目录 一、引言二、设计1、下拉刷新(1)依赖(2)使用 2、图片需求 三、结论 一、引言 描述:设计一个简单说说功能模块需求: 1、能够下拉刷新,更新数据 2、一条说说里允许包含多张图片&#xf…

第七章 Electron Vue3实现音乐播放器

一、介绍 🍑 🍑 🍑 一个音乐播放器应该具备播放、暂停、上一首、下一首、播放模式(单曲循环、列表循环、顺序播放……)。除了这些比如还可以扩展进度条的展示、拖拽、音量大小的调节,如果资源允许的话可以…

跨境电商开发的基本流程

在全球化的浪潮下,跨境电商已成为一个热门的商业模式。然而,很多人在跨境电商开发的过程中遇到了许多问题。本文将介绍跨境电商开发的流程,希望能够帮助大家更好地了解这个行业。 首先,跨境电商开发的第一步是寻找合适的产品。这…

DOC文件丢失怎么恢复?用这7种方法找回

在日常生活和工作中,我们经常会因为各种原因丢失重要的DOC文件,这给我们带来了不小的困扰。但是,不必担心,在本文中,我们将带大家了解一下DOC文件丢失怎么恢复。 关于DOC文件 DOC文件是指一种微软公司开发的文字处理软…

【短视频抖音多账号管理系统源码开发路径】

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 短视频矩阵系统开发涉及到多个领域的技术,包括视频编解码技术、大数据处理技术、音视频传输技术、电子商务及支付技术等。因此,短视频矩阵系统开发人员需要具备扎实的计算机基础知识、出色的编…

多边形三角化Earcut分析,以mapbox EarCut源码举例

多边形三角化,简单来说,就是给定一圈有序的多边形点生成三角面片,EarCut的原理描述网络上有很多(如https://blog.csdn.net/qq_24459491/article/details/102976671),就不细说了。但是有的时候看是一回事&am…

Ae 效果详解:Mocha AE

Ae菜单:效果/Boris FX Mocha/Mocha AE Effects/Boris FX Mocha/Mocha AE Ae菜单:动画/Track in Boris FX Mocha Animation/Track in Boris FX Mocha Mocha Pro 是一款强大的平面跟踪软件。既可作为独立软件运行,也提供了 Ae 的插件版本&#…

1.4C++运算符重载作函数

C运算符重载函数作为类成员函数 作为类成员函数时,运算符重载函数使用类的成员变量作为操作数。 写个 demo: 运算符重载函数作为类成员函数时,需要注意:运算符重载函数必须是类的成员函数,不能是普通函数或者全局函…

MIT6.024学习笔记(二)——图论(1)

学习不是为了竞争和战胜他人,而是为了更好地了解自己和世界。 - 达赖喇嘛 文章目录 图的相关概念涂色问题基础涂色方法(贪婪算法)证明 二分图匹配问题应用:稳定婚烟问题算法性质及其证明 图的相关概念 图的定义:一组&…

We need you | 隐语开源共建计划第一期任务等你认领

作为隐私计算开源界的一颗新星,隐语一直致力于推动隐私计算行业的发展,同时也在不断发展和完善中。通过开放、透明和共享的方式,协同行业优秀人才协同合作,推动隐私计算领域蓬勃发展,这是隐语开源的意义。因此&#xf…

FPGA多路视频叠加融合 HLS算法实现 提供2套工程源码和技术支持

目录 1、前言2、视频叠加模块的功能和性能3、HLS视频叠加融合设计4、vivado工程1--单路同源视频的缩放叠加详细设计方案vivado工程详解SDK工程详解 5、vivado工程2--两路非同源视频的缩放叠加详细设计方案vivado工程详解SDK工程详解 6、上板调试验证7、福利:工程代码…