相关动态
(详细)快速幂算法及效率分析大数幂乘快速幂取余(附测试时间)
2024-12-29 21:10

问题:求a^b % m,即a的b次方对m取余的结果。

只要学过C语言的循环就可以写出最简单的朴素版本:


朴素版

时间复杂度O(b),空间复杂度达到了惊人的O(a^b)的指数级。

考虑问题规模:a <(10 ^ 9), b <(10 ^ 6),m <(10 ^ 9)。

问题出现了:这样的算法在求a的b次幂的时候就极其容易溢出,即便用long long也是如此。


我们有取模运算的运算法则:
(a * b) % p = (a % p * b % p) % p


在这里不加证明的使用。

所以在这个前提下,我们可以在求a的b次幂的同时,每次对m进行%操作,这样可以使得ans不会越界。

根据思想可以写出以下代码:


改进版

时间复杂度O(b),空间复杂度为的O(max(a,m)),此时溢出的问题是得到了解决。

但如果考虑问题规模:a <(10 ^ 9), b <(10 ^ 18),m <(10 ^ 9),这样显然又无法满足需要了。


快速幂

这时候引入快速幂,它基于二分的思想,所以也称为二分幂。


不难注意到这样的事实:求a^b的过程中,b只有两种情况:奇数或偶数。

若b为偶数,则a^b = a^(b/2) * a^(b/2)。

若b为奇数,则a^b = a * a ^ (b-1)。且从下一次开始,b必然为偶数的情况。


基于以上思想就可以成功把求幂过程的复杂度降为(logb)。这样就可以满足原规模的数据了。

根据思想写出以下递归版本代码:


递归版:

我们也可以进一步写出迭代版本的代码(From算法笔记):


迭代版:


两组测试

1:10000 ^ 500000000 mod 71

朴素版已由于溢出导致结果错误,而优化版虽然能得出正确答案,但耗时相当长,快速幂的两种实现几乎没有任何耗时。

2:1003 ^ 9223372036854775807 mod 71


快速幂/二分幂的思想还是非常有用的,同时作为简单的算法也值得了解。

递归/迭代的写法在效率上差距不明显,可以采用自己习惯的写法。

    以上就是本篇文章【(详细)快速幂算法及效率分析大数幂乘快速幂取余(附测试时间)】的全部内容了,欢迎阅览 ! 文章地址:http://ww.kub2b.com/news/15052.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 http://ww.kub2b.com/mobile/ , 查看更多   
最新文章
智能家居“伪智能”、直播间买到的羽绒服穿不了……江苏一季度消费投诉热点出炉
4月9日,江苏省消费者权益保护委员会发布2025年一季度消费投诉及舆情热点报告。一季度全省消保委系统受理投诉51464件,接待消费
智能手机传感器及作用大盘点手机的作用「智能手机传感器及作用大盘点」
已经成为不可思议的小机器,几十年前,这样的设备只存在于科幻小说。如果回到几十年前,人们可能会认为是魔法。现在已经成为最普
您知道唐僧师徒在南通长牌中分别是谁吗?
《西游记》中,猪八戒与孙悟空对峙打斗时,曾经这样说“放生遭贬出天关,福陵山下图家业。我因有罪错投胎,俗名唤做猪刚鬣”,这
【华为】新版模拟器eNSP Lite安装攻略提前解锁华为手机模拟器「【华为】新版模拟器eNSP Lite安装攻略提前解锁」
新版模拟器eNSP Lite资源下载:华为新版模拟器eNSPLite镜像资源资源-CSDN文库    最近华为发布了新版模拟器eNSP Lite
Android监控虚拟键 android手机虚拟摄像头手机IM「Android监控虚拟键 android手机虚拟摄像头」
在工作中,camera这一块上,可能会有各种各样的需求。比如有人想新增一个虚拟摄像头,当用户app打开摄像头设备时,打开的不是系
微信语音怎么提取到电脑【苹果安卓手机】苹果手机备份到电脑「微信语音怎么提取到电脑【苹果安卓手机】」
微信语音中可能保存着一些温馨记忆,如年迈父母发给自己的语音消息,微信语音中也可能保存着知识技能,如培训老师发给自己的各种
修成正果!安东尼已被通知入选2025年奈史密斯篮球名人堂
北京时间4月3日讯 据Shams Charania报道,十次入选NBA全明星的卡梅隆·安东尼已获通知,他被选入2025年奈史密斯篮球名人堂。曾六
在任意手机上使用带有图形化界面(GUI)的完整Linuxlinux手机「在任意手机上使用带有图形化界面(GUI)的完整Linux」
不过,在我们今天的任务中只有运行者两者。这篇教程不会讲述任何运行后的自定义使用。不同于之前的两次尝试——安装Window
腾讯史上最大就业计划技术岗超六成,大厂加码AI人才校招
4月17日,腾讯宣布启动史上最大就业计划,三年内将新增28000个实习岗位并加大转化录用,仅2025年将迎来10000名校招实习生。在大
纪律处罚消息两则:海港主教练穆斯卡特停赛1场罚款1万 & 广东男篮外援莫兰德罚款3万
各CBA俱乐部、赛区:2025年4月8日,2024-2025赛季CBA联赛季后赛12进8阶段场序467,上海久事大鲨鱼俱乐部久事篮球队与广东宏远华