打卡第十天(乘方取模计算(模幂计算))

竞赛算法:

数论算法
组合算法
计算几何
图论算法
网络流算法
搜索算法
字符串算法
自动机
博弈论

模拟法

 

六大算法:

分治法
贪心法
动态规划法
回溯法
分支限界法
遗传算法

基础过程与算法:

递归法
递推法
枚举法
查找算法
排序算法
数据结构有关算法

乘方取模计算(模幂计算)

乘方取模计算也称为模幂计算,在密码系统中经常使用,是不可缺少的。

使用本程序可以解HDU2035,只需要考虑输入和输出。

/*

* 乘方取模

*

* 已知给定的正整数a、n和m,计算x的值,a^n = x (mod m)。

*

* 二分法用在这里也很有效果。

*/

#include <stdio.h>

long powermod(long a, long n, long m)

{

long res = 1L;

while(n) {

if(n & 1L) {

res *= a;

res %= m;

}

a *= a;

a %= m;

n >>= 1;

}

return res;

}

int main(void)

{

printf("a=%ld, n=%ld, m=%ld, x=%ld\n", 7L, 3L, 41L, powermod(7L, 3L, 41L));

return 0;

}

猜你喜欢

转载自blog.csdn.net/huangluping12345/article/details/82928716