One knowledge: a*b % k = (a%k)*(b%k)%k

Since the power here is an array, we'd better handle it digit by digit.

One observation:

a^1234567 % k = (a^1234560 % k) * (a^7 % k) % k = (a^123456 % k)^10 % k * (a^7 % k) % k

Looks complicated? Let me put it other way:

Suppose f(a, b) calculates a^b % k; Then translate above formula to using f :

f(a,1234567) = f(a, 1234560) * f(a, 7) % k = f(f(a, 123456),10) * f(a,7)%k;

Implementation of this idea:

```
class Solution {
const int base = 1337;
int powmod(int a, int k) //a^k mod 1337 where 0 <= k <= 10
{
a %= base;
int result = 1;
for (int i = 0; i < k; ++i)
result = (result * a) % base;
return result;
}
public:
int superPow(int a, vector<int>& b) {
if (b.empty()) return 1;
int last_digit = b.back();
b.pop_back();
return powmod(superPow(a, b), 10) * powmod(a, last_digit) % base;
}
};
```

**Note:** This approach is definitely not the fastest, but it is something one can quickly understand and write out when asked in an interview.

And this approach is not using any built-in "pow" functions, I think this is also what the interviewer would expect you to do.

Hope it helps!