你的任务是计算 a^b 对 1337 取模, a 是一个正整数, b 是一个非常大的正整数且会以数组形式给出。
示例 1:
输入:a = 2, b = [3]输出:8
示例 2:
输入:a = 2, b = [1,0]
输出:1024
示例 3:
输入:a = 1, b = [4,3,3,8,5,2]
输出:1
示例 4:
输入:a = 2147483647, b = [2,0,0]
输出:1198
提示:
1 <= a <= 2^31 - 11 <= b.length <= 20000 <= b[i] <= 9b不含前导 0解法一:
由于 b 可能是个非常非常长的数,所以如果计算出每次的指数可能会超限。
所以需要 a 每次取他的 10 次幂。 ```go const MOD = 1337
func superPow(a int, b []int) int { n := len(b) res := 1 a %= MOD for i := n - 1; i >= 0; i— { res = res * pow(a, b[i]) % MOD a = pow(a, 10) } return res }
func pow(x, y int) int { res := 1 for y > 0 { res = res * x % MOD y— } return res } ```
