2018 蓝桥杯省赛 B 组模拟赛(五)快速幂
一个数的整数次幂,是我们在计算中经常用到的,但是怎么可以在 \mathcal{O}(\log (n))O(log(n)) 的时间内算出结果呢?
代码框中的代码是一种实现,请分析并填写缺失的代码,求 x^y \mod pxymodp 的结果。 缺失的部分为y为偶数时的情况 递归
#include <iostream>
using namespace std;
int pw(int x, int y, int p) {
if (!y) {
return 1;
}
int res = pw(x * x , y / 2 , p);
if (y & 1) {
res = res * x % p;
}
return res;
}
int main() {
int x, y, p;
cin >> x >> y >> p;
cout << pw(x, y, p) << endl;
return 0;
}答案:pw(x*x , y/2 , p)
查看22道真题和解析
