幂取模算法
来源:互联网 发布:数学辅导软件下载 编辑:程序博客网 时间:2024/05/21 16:59
问题描述:
输入正整数a、n和m,输出的值。
方法一:依此乘以a并取模
#include<iostream>#include<cstdio>using namespace std;int pow_mod(int a, int n, int m){int ans = 1;for (int i = 0; i < n; i++)ans = (int)((long long)ans * a % m);return ans;}int main(){int a, n, m;scanf("%d%d%d",&a,&n,&m);printf("%d\n",pow_mod(a,n,m));system("pause");return 0;}
方法二:分治法
由于每次都要乘以a,所以可以分为左右两部分,分别求出左右两部分的幂取模,然后再合并两部分的幂取模。
算法流程如下:
程序实现如下:
#include<iostream>#include<cstdio>using namespace std;int pow_mod(int a, int n, int m){if (n == 1) return a%m;int newn = n / 2;int x=pow_mod(a, newn, m);long long ans = (long long)x*x%m;if (n % 2)ans = ans*a%m;return ans;}int main(){int a, n, m;scanf("%d%d%d",&a,&n,&m);printf("%d\n",pow_mod(a,n,m));system("pause");return 0;}
2 0
- 幂取模算法
- 幂取模算法
- 幂取模算法
- 幂取模算法
- 快速幂取模算法模板
- 快速幂取模算法
- 快速幂取模算法实现
- 快速幂取模算法
- 快速幂取模算法
- 快速幂取模算法
- 快速幂取模算法
- 快速幂取模算法
- 快速幂取模算法模板
- 快速幂取模算法
- 快速幂取模算法
- 快速幂取模算法
- 快速幂取模算法【模板】
- 快速幂取模算法
- 非容器组件(下拉,复选) 菜单组件
- C# 委托与事件的一点理解(1)
- 嵌入式软件测试的十大方法《转》
- 入门训练 A+B问题
- Android数据库——使用LitePal建立表关联
- 幂取模算法
- 并发服务器,分布式服务器(结构)
- 关于学习Hadoop中未总结的资料
- codeforces 735 C. Tennis Championship (数学)
- hibernate如何进行批量的数据操作,防止内存溢出
- HDU 5996 BestCoder Round #90 1002 dingyeye loves stone 博弈
- Java中运用数组的四种排序方法
- C3P0连接池配置
- c语言运算符