Your task is to calculate ab 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
class Solution {
public int superPow(int a, int[] b) {
int result = 1;
for (int i = 0; i < b.length; i++){
result = (helper(result,10) * helper(a, b[i])) % 1337; // It's the key
}
return result;
}
private int helper(int a, int b){ // Function to get the value of (a^b)mod(1337)
int result;
if (b == 0) return 1;
if (b == 1) return a % 1337;
return (helper(a, b/2) * helper(a, b - b/2)) % 1337;
}
}