正整数指数的快速幂

用递归,每次幂次升半。

 1 typedef long long ll;
 2 ll quick_pow(ll a, int n)
 3 {
 4     // 出口设置
 5     if (n == 0) return 1;
 6     ll ans = a;
 7     int ex = 1; // 幂次
 8     while ((ex << 1) <= n) {
 9         ans = ans * ans;
10         ex <<= 1; // 幂次乘2
11     }
12     return ans * quick_pow(a, n - ex);
13 }
14 int main()
15 {
16     cout << quick_pow(10, 11) << endl;
17     return 0;
18 }

 

posted on 2020-04-16 22:12  Black_x  阅读(150)  评论(0编辑  收藏  举报