372. Super Pow (Medium)

Your task is to calculate $$a^b$$ mod 1337 where a is a positive integer and b is an extremely large positive integer given in the form of an array.

Example1:

a = 2
b = [3]

Result: 8

Example2:

a = 2
b = [1,0]

Result: 1024

Solution:

class Solution {
    int pow(int x, int n) {
        if (n == 0) return 1;
        if (n == 1) return x%1337;
        return pow(x%1337, n/2)*pow(x%1337, n-n/2)%1337 ;
    }
public:
    int superPow(int a, vector<int>& b) {
        long num = 1;
        for (int i = 0; i < b.size(); ++i) {
            num = pow(a,b[i])*pow(num,10)%1337;
        }
        return num;
    }
};

results matching ""

    No results matching ""