题目:
你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。
算法:
方法一:快速幂
1.为什么要powAndMod:
如果只pow不mod会溢出
2:ans = ans * powAndMod(a, b[i]) % mod的依据:
func superPow(a int, b []int) int {
ans := 1
mod := 1337
for i := len(b) - 1; i >= 0 ; i -- {
ans = ans * powAndMod(a, b[i]) % mod
a = powAndMod(a, 10)
}
return ans
}
func powAndMod(a, b int) int {
ans := 1
for b > 0 {
if b & 1 == 1 {
ans = ans * a % 1337
}
a = a * a % 1337
b = b >> 1
}
return ans
}