# 372. Super Pow

• Time: $O(n)$
• Space: $O(1)$
 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class Solution { public: int superPow(int a, vector& b) { constexpr int k = 1337; int ans = 1; auto powMod = [&](int x, int y) { // x^y % k int pow = 1; while (y--) pow = (pow * x) % k; return pow; }; a %= k; for (const int i : b) ans = powMod(ans, 10) * powMod(a, i) % k; return ans; } };
 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class Solution { public int superPow(int a, int[] b) { int ans = 1; a %= k; for (final int i : b) ans = powMod(ans, 10) * powMod(a, i) % k; return ans; } private final int k = 1337; private int powMod(int x, int y) { int pow = 1; while (y-- > 0) pow = (pow * x) % k; return pow; } }
 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Solution: def superPow(self, a: int, b: List[int]) -> int: def powMod(x: int, y: int) -> int: pow = 1 for _ in range(y): pow = (pow * x) % k return pow k = 1337 ans = 1 for i in b: ans = powMod(ans, 10) * powMod(a, i) % k return ans