372. 超级次方
1 class Solution 2 { 3 int base = 1337; 4 5 int mypow(int a, int k) 6 { 7 if (k == 0) return 1; 8 a %= base; 9 10 if (k % 2 == 1) // k 是奇数 11 { 12 return (a * mypow(a, k - 1)) % base; 13 } 14 else // k 是偶数 15 { 16 int sub = mypow(a, k / 2); 17 return (sub * sub) % base; 18 } 19 } 20 21 public: 22 int superPow(int a, vector<int>& b) 23 { 24 // 递归的 base case 25 if (b.empty()) return 1; 26 // 取出最后一个数 27 int last = b.back(); 28 b.pop_back(); 29 // 将原问题化简,缩小规模递归求解 30 int part1 = mypow(a, last); 31 int part2 = mypow(superPow(a, b), 10); 32 // 合并出结果 33 return (part1 * part2) % base; 34 } 35 };
Mamba never out

浙公网安备 33010602011771号