LeetCode - Pow(x, n) (快速幂)

来源:互联网 发布:armani code 香水知乎 编辑:程序博客网 时间:2024/05/01 22:56

思路

一开始直接交了一发pow(x, n),RE了。

后来按正常的方法写了一发,TLE了。

只能用快速幂

注意处理n < 0的情况。

代码

  1. class Solution {
  2. public:
  3. double pow(double a, int m)
  4. {
  5. if (a == 1) return 1;
  6. if (a == 0) return 0;
  7. bool flag = m > 0 ? false : true;
  8. if (flag) m = -m;
  9. double ans = 1;
  10. while (m > 0)
  11. {
  12. if (m & 1)
  13. ans = ans * a;
  14. a = a * a;
  15. m >>= 1;
  16. }
  17. return flag ? 1 / ans : ans;
  18. }
  19. };
0 0
原创粉丝点击