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

本文深入探讨了多种竞赛算法,包括数论、组合、计算几何、图论、网络流、搜索、字符串、自动机、博弈论及模拟法等,并介绍了六大算法如分治法、贪心法、动态规划法等。此外,还详细讲解了基础过程与算法,如递归、递推、枚举、查找、排序以及数据结构相关算法。特别地,文章提供了乘方取模计算(模幂计算)的代码实现,这是密码系统中不可或缺的一部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

竞赛算法:

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

模拟法

 

六大算法:

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

 

基础过程与算法:

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

 

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

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

使用本程序可以解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;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值