题目描述
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.
题目大意
计算 ab mod 1337 的值,其中b是很大的正整数用数组表示。
示例
E1
E2
解题思路
根据LeetCod@fentoyal的思想,利用递归对数组b依次进行末尾数字的乘方计算。
复杂度分析
时间复杂度:O(N)
空间复杂度:O(N)
代码
class Solution { const int base = 1337; // 计算a的k次方 int powNum(int a, int k) { a %= base; int res = 1; while(k) { res = (res * a) % base; --k; } return res; } public: int superPow(int a, vector<int>& b) { if(b.size() == 0) return 1; int k = b.back(); b.pop_back(); return ((powNum(superPow(a, b), 10) % base) * powNum(a, k)) % base; } };