快速幂算法实现
234 字
1 分钟
快速幂算法实现
以P1226 【模板】快速幂为基准
前言<快速幂的时间复杂度是>快速幂的时间复杂度是>,暴力乘积取幂的复杂度则为,是一个使用的小技巧,大部分情况下,无需理解原理,背板子即可
原理
对于一个的式子,我们可以把拆成的二进制各位相乘,这样根据神秘初二的一个什么什么率(反正我忘了叫啥名了),其计算结果仍不变,但是工作量却少了很多
此处引用下OI-Wiki的例子
假设要计算 .如果将它展开为连乘式,需要 次乘法.但是,因为 ,所以我们仅需计算即可
代码实现:
int fastpower(int x, int y,int mod=LLONG_MAX) { int ans = 1, base = x; while (y) { if (y & 1) ans *= base, ans %= mod; base *= base, base %= mod; y >>= 1; } return ans%mod;}cin >> a >> b >> p;printf("%ld^%ld mod %ld=%ld", a, b, p, fastpower(a, b, p));支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
KMP算法实现
算法利用C++实现KMP算法,以https://www.luogu.com.cn/problem/P3375为参考
2
从0写软件-Win32应用代码模板
C++有点像大份
3
下载/编译/使用 NeonVision
NeonVision保姆级教你下载和编译及使用NeonVision
4
关于我的OI代码缺省源
OI以后懒得写了直接复制
5
一些冷门但好用的STL容器
OISTL真的很好用
随机文章随机推荐











