求 a 的 b 次方对 p 取模的值。c++
时间: 2023-12-18 09:49:47 浏览: 227
快速求幂和取余 C++
可以使用快速幂算法来求解,具体步骤如下:
1. 将 b 转化为二进制表示,例如,如果 b = 13,二进制表示为 1101。
2. 从最低位(即右侧)开始,依次考虑每一位。如果这一位为 1,就将 a 的对应幂次乘起来,否则不做处理。
3. 每乘一次就对 p 取模,避免数值溢出。
4. 在每一步中,都将 a 的幂次平方,以便在下一步中使用。
5. 最终得到的结果即为所求。
下面给出 Python 代码实现:
```python
def power_mod(a, b, p):
res = 1
while b > 0:
if b & 1 == 1:
res = (res * a) % p
a = (a * a) % p
b = b >> 1
return res
```
其中,& 表示按位与运算,>> 表示右移运算。
阅读全文