快速幂取余
来源:互联网 发布:海森矩阵维基百科 编辑:程序博客网 时间:2024/05/16 13:45
这里我们需要两个公式:
这两个公式都不难理解,自己可以验证一下,3^4 = 9^2。
有了这两个公式之后我们就可以考虑思路了。
我们就以b为偶数来举例。
a^b%c = ((a^2)^b/2)%c;
在这里我们假设b/2还是偶数,那么
((a^2)^b/2)%c = (((a^2)^2)^(b/2)/2)%c;
代码如下:
#include <bits/stdc++.h>using namespace std;int quickMod(int a, int b, int c){ int ans = 1; while (b) { if (b % 2 == 1) ans = (ans * a) % c; b /= 2; a = (a * a) % c; } return ans;}int main(){ int a, b, c; while (~scanf("%d %d %d", &a, &b, &c)) { printf("%d\n", quickMod(a, b, c)); } return 0;}
1 0
- 快速幂取余
- 快速幂取余
- 快速幂取余
- 快速幂取余
- 快速幂取余
- 快速幂取余
- 快速幂取余
- 快速幂取余
- 快速幂取余
- 快速幂取余
- 快速幂取余
- 快速幂取余
- 快速幂取余
- 快速幂取余
- 关于快速幂和快速幂取余
- [模版] 快速幂以及快速幂取余
- 快速幂运算 与 快速幂取余
- 整数快速幂取余
- JS基础知识:变量对象、作用域链和闭包
- centos7 配置安装 mysql 5.7
- Android四大组件-学习记录
- 线程和进程的区别
- pico-ctf-2013 overflow-1
- 快速幂取余
- 双绞线 简单的命令
- OpenCV学习笔记(二)——特征提取与描述
- hiho字体大小设置(二分搜索)
- linux下创建定时任务
- 学习小结
- 剑指offer习题JAVA实现(一)
- SpringMVC 配置Thymeleaf模板
- 0418-交集选择器