【蓝桥杯】Python算法——快速幂

零、前言

距离25年蓝桥杯还有大概三个月时间,接下来重点应该会放在蓝桥杯备考方向,一起努力,一起加油

一、快速幂

如何快速求 a b = p a^b=p ab=p?如果直接循环aa a...毫无疑问时间复杂度是很大的,那么怎么降低计算量呢?快速幂就是从幂运算的性质出发,提出的优化。

对于 a b a^b ab,如果b是偶数,则可拆分为 a b = a b / / 2 ∗ a b / / 2 a^b = a^{b//2}*a^{b//2} ab=ab//2∗ab//2

如果b是奇数,则有 a b = a b / / 2 ∗ a b / / 2 ∗ a a^b = a^{b//2}*a^{b//2}*a ab=ab//2∗ab//2∗a

对于任意的a,b,我们都可以利用这个性质进行拆解,直到指数部分拆解为0或1.

二、代码

python 复制代码
def ksm(a,b,mod):
	if b==0:
		return 1
	if b==1:
		return a % mod
	res = ksm(a, b//2, mod)
	res = res * res % mod
	if b//2 == 1:
		res = res * a % mod
	return res

三、小结

该算法属于蓝桥杯考点中初等数论范围考点,比较基础,建议记住随时可调用。

相关推荐
倒头就睡的小比特9 小时前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!9 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
猎头南楼10 小时前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
旖旎夜光11 小时前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
wzdark11 小时前
大规模并行计算中的负载均衡算法研究4
算法
Because_of_Her111 小时前
并查集-听课笔记
笔记·算法·并查集
码流子12 小时前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
another heaven12 小时前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
wzdark12 小时前
从算法设计模式看编程思维的抽象能力4
算法
2601_9622186112 小时前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法