题目
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
递归
大多数的问题都不是一眼直接看出来的,一般都要从基本的方法当中找规律。
1、处理数组指数
数组够长的话是不能直接转化成int的,所以要另想他法。
通常a^b = aa^(b-1),在数组中可类似计算。
2、求模
公式:(ab)%MOD = (a%MOD)(b%MOD)%MOD
证明:
a = Ak +B;b = Ck + D
ab = ACk^2 + ADk + BCk +BD
a % k = B;b % k = D
BD % k = (a % k)(b % k) % k
python代码
class Solution(object):
def superPow(self, a, b):
"""
:type a: int
:type b: List[int]