一个数的整数次幂,是我们在计算中经常用到的,但是怎么可以在 mathcal{O}(log (n))O(log(n)) 的时间内算出结果呢?
1 #include <iostream> 2 using namespace std; 3 4 int pw(int x, int y, int p) { 5 if (!y) { 6 return 1; 7 } 8 int res = pw(x*x,y>>1,p)/*在这里填写必要的代码*/; 9 if (y & 1) { 10 res = res * x % p; 11 } 12 return res; 13 } 14 15 int main() { 16 int x, y, p; 17 cin >> x >> y >> p; 18 cout << pw(x, y, p) << endl; 19 return 0; 20 }