你的任务是计算 a^b1337 取模, a 是一个正整数, b 是一个非常大的正整数且会以数组形式给出。

示例 1:

  1. 输入:a = 2, b = [3]
  2. 输出: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 - 1
  • 1 <= b.length <= 2000
  • 0 <= b[i] <= 9
  • b 不含前导 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 } ```