https://leetcode.com/problems/powx-n/
两个坑:
(1)次方可以是赋值,解决方法是1/x
(2)注意啊,如果n为负数的时候 右移运算,为了保持符号,符号位自动填充1,会TLE
另外还有坑 负的最大值比正的最大值大,所以一定转换long long啊
class Solution { public: double myPow(double x, int n) { double ret = 1.0, xx; long long nn = n; if(nn<0)xx=1.0/x, nn=-nn; else xx=x; while(nn) { if(nn&1) { ret *= xx; } xx *= xx; nn >>= 1; } return ret; } };