快速幂

一个数的整数次幂,是我们在计算中经常用到的,但是怎么可以在 \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 }

 

posted @ 2018-03-30 20:43  Kiven#5197  阅读(105)  评论(0编辑  收藏  举报