C++刷leetcode(372. 超级次方)【快速幂+取模】
本帖最后由 糖逗 于 2020-4-29 21:09 编辑题目描述:
你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。
示例 1:
输入: a = 2, b =
输出: 8
示例 2:
输入: a = 2, b =
输出: 1024
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/super-pow
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
int base = 1337;
int quick_pow(int a, int k) {
if (k == 0) return 1;
if (k % 2 == 1) {
return (a%base * quick_pow(a, k - 1)) % base;//这里a的后面一定要加%base
} else {
int sub = quick_pow(a, k / 2);
return (sub * sub) % base;
}
}
int superPow(int a, vector<int>& b) {
if (b.empty()) return 1;
int last = b.back();
b.pop_back();
int part1 = quick_pow(a, last);
int part2 = quick_pow(superPow(a, b), 10);
return (part1 * part2)%base;
}
参考链接:https://leetcode-cn.com/problems/super-pow/solution/you-qian-ru-shen-kuai-su-mi-suan-fa-xiang-jie-by-l/ 你回来啦 _2_ 发表于 2020-4-30 15:40
你回来啦
没有5月份要忙别的事,今天抓住4月份最后一天更几个新。6月中旬左右才回来耍{:10_250:} 糖逗 发表于 2020-4-30 15:46
没有5月份要忙别的事,今天抓住4月份最后一天更几个新。6月中旬左右才回来耍
哦{:10_257:}
页:
[1]