快速幂 c++

一般大家写都是

cpp 复制代码
int ans = 1;
for (int i = 1; i <= a; i ++)
    ans *= x;

时间复杂度

但是这对于我们还不够,我们要


首先我们得知道一个数学知识

那么求 就有以下递归式

a 能2整除

a 不能2整除 (这里a/2是整除)

所以每次都调用 不就是

最后补充一个东西

(i + j = a)

代码:

cpp 复制代码
#include <iostream>
using namespace std;
typedef long long LL;
LL a, b, m;
//m是取模的数
LL q_pow(LL a, LL b, LL m) {
	if(b == 0)
		return 1;
	LL tmp = q_pow(a, b >> 1, m) % m;
	return (b & 1 ? a : 1) * tmp % m * tmp % m;
//b & 1 和 b % 2 == 1 是等价的
}
int main() {
	cin >> a >> b >> m;
	cout << q_pow(a, b, m);
	return 0;
} 
相关推荐
嘴贱欠吻!1 小时前
Flutter鸿蒙开发指南(七):轮播图搜索框和导航栏
算法·flutter·图搜索算法
张祥6422889041 小时前
误差理论与测量平差基础笔记十
笔记·算法·机器学习
qq_192779872 小时前
C++模块化编程指南
开发语言·c++·算法
代码村新手2 小时前
C++-String
开发语言·c++
cici158744 小时前
大规模MIMO系统中Alamouti预编码的QPSK复用性能MATLAB仿真
算法·matlab·预编码算法
历程里程碑4 小时前
滑动窗口---- 无重复字符的最长子串
java·数据结构·c++·python·算法·leetcode·django
2501_940315265 小时前
航电oj:首字母变大写
开发语言·c++·算法
lhxcc_fly5 小时前
手撕简易版的智能指针
c++·智能指针实现
CodeByV5 小时前
【算法题】多源BFS
算法
TracyCoder1235 小时前
LeetCode Hot100(18/100)——160. 相交链表
算法·leetcode