题目描述 给出三个整数 a,b,m,求 a b modm 的值。 输入格式 一行三个整数 a,b,m。 输出格式 一个整数,表示 a b modm 的值。 样例 2 100 1007 169 数据范围与提示 对于全部数据,1≤a,b,m≤10 9 c语言
时间: 2024-09-09 19:12:48 浏览: 108
在C语言中,求解 a^b mod m 的值可以通过快速幂算法来实现。快速幂算法是一种高效的算法,用于在模 m 的情况下计算 a 的 b 次方。这个算法利用了幂的性质,将指数 b 转化为二进制表示,然后从低位到高位进行乘法操作,每一步都取模以避免数值过大。
下面是一个使用快速幂算法的C语言函数示例:
```c
#include <stdio.h>
// 快速幂算法求解 a^b mod m
long long quick_pow(long long a, long long b, long long m) {
long long result = 1;
a = a % m; // 首先将a取模,减少后续计算中的数值范围
while (b > 0) {
if (b % 2 == 1) { // 如果当前位是1,则乘到结果中
result = (result * a) % m;
}
b = b / 2; // 指数除以2
a = (a * a) % m; // 底数平方后取模
}
return result;
}
int main() {
long long a, b, m;
// 读取输入
scanf("%lld %lld %lld", &a, &b, &m);
// 计算并输出结果
printf("%lld\n", quick_pow(a, b, m));
return 0;
}
```
这段代码中,`quick_pow` 函数就是快速幂算法的实现,它接受三个参数 a、b 和 m,返回 a^b mod m 的结果。主函数 `main` 用于读取输入和输出结果。
阅读全文