设计c++蛮力法算法求解 a^n mod m,其中a、n和m均为大于1的整数
时间: 2024-10-18 08:11:10 浏览: 43
设计C++暴力法(Brute Force)求解`a^n % m`这个问题,通常会采用循环或递归的方式计算幂运算,并利用取模操作保证结果始终小于`m`,避免溢出。下面是一个简单的C++代码示例:
```cpp
#include <iostream>
// 通过循环计算a的n次方对m取余的结果
long long powerModulo(long long a, long long n, long long m) {
if (n == 0) // 遇到指数为0的情况,直接返回1
return 1;
long long result = 1; // 初始化结果为1
a %= m; // 确保a不会超出范围
while (n > 0) {
// 如果n为奇数,则当前结果乘以a
if (n & 1)
result *= a, result %= m;
// 将a平方并除以2,减小n的值
a *= a, a %= m;
n >>= 1; // n右移一位相当于除以2
}
return result;
}
int main() {
long long a, n, m;
std::cout << "请输入a, n, 和m的值:";
std::cin >> a >> n >> m;
long long result = powerModulo(a, n, m);
std::cout << "a^" << n << " mod " << m << " 的结果是:" << result << std::endl;
return 0;
}
```
阅读全文