aboutsummaryrefslogtreecommitdiff
path: root/super_pow.py
blob: 1ec4c89114a7029724bc44f48a008095d91cee24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 372. Super Pow
from functools import reduce

"""
your task is to calculate `a^b % 1337` where 'a' is a positive integer and
'b' is an extremely large positive integer given in the form of an array
"""


class Solution(object):
    def superPow(self, a, b):
        """
        :type a: int
        :type b: List[int]
        :rtype: int
        """
        return (
            0
            if a % 1337 == 0
            else pow(a, reduce(lambda x, y: (x * 10 + y) % 1140, b) + 1140, 1337)
        )


if __name__ == "__main__":
    obj = Solution()
    print(obj.superPow(a=2, b=[3]))
    print(obj.superPow(a=2, b=[1, 0]))
    print(obj.superPow(a=1, b=[4, 3, 3, 8, 5, 2]))