# Solving Leetcode Interviews in Seconds with AI: Super Pow


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "372" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

	# Problem Statement
	> 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.   Example 1:  Input: a = 2, b = [3] Output: 8  Example 2:  Input: a = 2, b = [1,0] Output: 1024  Example 3:  Input: a = 1, b = [4,3,3,8,5,2] Output: 1    Constraints:  1 <= a <= 231 - 1 1 <= b.length <= 2000 0 <= b[i] <= 9 b does not contain leading zeros.  

	# Explanation
	Here's the breakdown of the solution:

*   **Modular Exponentiation:** Utilize the property (a * b) mod m = ((a mod m) * (b mod m)) mod m and a<sup>(x+y)</sup> mod m = (a<sup>x</sup> mod m * a<sup>y</sup> mod m) mod m. This avoids calculating huge intermediate results.
*   **Iterate through b:** Process the array `b` digit by digit. For each digit, update the result by raising it to the power of 10 and then multiplying by a<sup>digit</sup>.
*   **Optimization:** Use the modulo operator (%) after each multiplication to keep the intermediate results within the range [0, 1336].

*   **Runtime & Storage Complexity:** O(N), where N is the length of the array b, and O(1) storage complexity.

	
	# Code
	```python
	def superPow(a: int, b: list[int]) -> int:
    """
    Calculates a^b mod 1337 where b is represented as an array of digits.

    Args:
        a: The base integer.
        b: The exponent represented as a list of digits.

    Returns:
        The result of a^b mod 1337.
    """

    MOD = 1337
    result = 1
    a %= MOD  # Reduce a modulo MOD to avoid large intermediate values

    for digit in b:
        result = pow(result, 10, MOD) * pow(a, digit, MOD) % MOD

    return result
	```
			
