阿里巴巴2021暑期實習筆試題,題目本身需要經過數學推導,得到答案的表達式爲 ,其中 是輸入的一個大數, 是取模運算。
本題需要使用快速冪取模算法,在python中有自帶的實現:
pow(a,b,c) # 等價於(a^b)%c,但在b非常大時效率高很多
使用其他語言需要自己實現,可以參考下面的資料與代碼:
[1] 快速冪取模快速算法超級詳細介紹
def quick_pow_mod(a, b, c):
A = 1 # 一個遞推數列
T = a % c # 一個輔助的遞推數列
while b != 0: # 用b每次除以2直到爲0
# 遞推An,如果當前b的二進制最低位不是1則不用計算,因爲An=An-1
if b & 1:
A = (A * T) % c
# 遞推Tn
T = (T * T) % c
b >>= 1
return A