A simple math on modular calculations.
Code below can be simplified of course.
class Solution { const int MOD = 1337; long long _pow(int a, int p) { if(p == 0) return 1; if(p == 1) return a; long long pr = _pow(a, p/2); long long r = p % 2 ? a : 1; return ((pr * pr) % MOD) * r %MOD; } public: int superPow(int a, vector<int>& b) { int n = b.size(); if(!n) return a % MOD; vector<long long> tmp(n); long long cb = a; for(int i = n - 1; i >= 0; i --) { tmp[i] = _pow(cb, b[i]) % MOD; cb = _pow(cb, 10) % MOD; } long long ret = 1; for(int i = 0; i < n; i ++) { ret = (ret * tmp[i]) % MOD; } return ret; } };