快速幂 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;
} 
相关推荐
头发还没掉光光2 小时前
C++STL之list
c语言·数据结构·c++·list
我笑了OvO3 小时前
C++类和对象(1)
java·开发语言·c++·类和对象
virtual_k1smet4 小时前
#等价于e * d ≡ 1 mod φ(n) #模逆元详解
人工智能·算法·机器学习
可触的未来,发芽的智生5 小时前
新奇特:神经网络的集团作战思维,权重共享层的智慧
人工智能·python·神经网络·算法·架构
_屈臣_5 小时前
卡特兰数【模板】(四个公式模板)
c++·算法
渡我白衣5 小时前
C++ 异常处理全解析:从语法到设计哲学
开发语言·c++·面试
坚持编程的菜鸟6 小时前
LeetCode每日一题——交替合并字符串
c语言·算法·leetcode
青草地溪水旁6 小时前
设计模式(C++)详解——观察者模式(Observer)(1)
c++·观察者模式·设计模式
悦悦子a啊6 小时前
[Java]PTA: jmu-Java-02基本语法-08-ArrayList入门
java·开发语言·算法
xlq223227 小时前
12.排序(上)
数据结构·算法·排序算法