快速幂算法

快速幂算法是一种高效的计算大数次方的算法,通过不断分解指数降低运算次数。例如,2的81次方,可以转化为2^(40*2)=4^40*2...以此类推,算法复杂度为log2 n。该算法在解决计算大数次方的问题时表现出优越的性能。给出的题目代码利用位运算进一步优化了计算速度。
摘要由CSDN通过智能技术生成

快速幂算法

先来一道洛谷水题
在这里插入图片描述
这题并不难理解,但是要做出来要理解一种算法:快速幂
举个例子:计算2的81次方。如果要一次一次的递增运算,要计算81次,快速幂算法能够大大减少要运算的次数:
2^81 = 2 ^ 80 * 2
= 2 ^ (40 *2) 2
=4 ^ 40 * 2
=4 ^ (2
20) *2
=16 ^ 20 * 2
=16 ^ (2 *10) *2
=256 ^ 10 * 2
= 256^(2 * 5 ) *2
= 65536 ^ 5 *2
= 65536 ^4 * 65536 * 2
= 65536 ^(2 * 2) * 65536 * 2
= 65536 ^2 * 65536^2 *65536 *2
大概就是这么个思想,算法的复杂度大概是log2 n
上面题目的代码如下

// An highlighted block
#include <stdio.h>
int ksm(long long int value, long long int pow,long long int mod)
{
   
	long long int result = 1;
	while
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值