classSolution(object): defsuperPow(self, a, b): """ :type a: int :type b: List[int] :rtype: int """ ans = 1 mod = 1337 for bi in b[::-1]: ans = ans * a ** bi % mod a = a ** 10 % mod return ans
classSolution { private: int mod = 1337; public: intsuperPow(int a, vector<int>& b){ int n = b.size(); int ans = 1; for (int i = n - 1; i >= 0; i--) { ans = ans * quick_pow(a, b[i]) % mod; a = quick_pow(a, 10); } return ans; } inlineintquick_pow(int a, int b){ int ans = 1; a %= mod; while (b > 0) { if (b & 1) ans = ans * a % mod; a = a * a %mod; b >>= 1; } return ans; } };
publicclassSolution { privateintmod=1337; publicintsuperPow(int a, int[] b) { intn= b.length; intans=1; for (inti= n - 1; i >= 0; i--) { ans = ans * quick_pow(a, b[i]) % mod; a = quick_pow(a, 10); } return ans; } intquick_pow(int a, int b) { intans=1; a %= mod; while (b > 0) { if ((b & 1) !=0) ans = ans * a % mod; a = a * a % mod; b >>= 1; } return ans; } }