- 若采用循环直接实现幂指数计算时间复杂度为O(n)
- 使用快速幂的方式,即计算的幂指数的指数部分每次减半,底数变为平方。通过对折的方式,减少指数部分,从而减少循环的次数。
- (对指数奇偶性进行判断)当指数大于零的时候,对2取余数,余数为1的时候,此时计算的结果res乘一次底数,并将结果对p取余。
- 指数对2取整(变为原来的一半),底数取平方并对p取余数。
- 当指数<=0,跳出循环。
tips:计算中对p取余数,防止数值过大,造成内存溢出。
# @param q 询问次数
# @param a 底数
# @param b 指数
# @param p 除数
# @return res 幂指数对p取余数
def fast_power(base, power, p):
res = 1
while power > 0:
if power % 2 == 1:
res = res * base % p
power = power // 2
base = base * base % p
return res % p
q = int(input())
for i in range(q):
s = input()
splt = s.split()
a = int(splt[0])
b = int(splt[1])
p = int(splt[2])
ans = fast_power(a, b, p)
print(ans)