LeetCode POW

 1     double pow(double x, int n) {
 2         if (n == 0) return 1;
 3         unsigned int k = 0;
 4         if (n < 0) {
 5             x = 1.0 / x;
 6             k = -n;
 7         } else {
 8             k = n;
 9         }
10         if (k == 1) return x;
11         
12         double r = pow(x, k/2);
13         r = r * r;
14         if (0x1 & k) {
15             r = r * x;
16         }
17         return r;
18     }
 1 double pow(double x, int n) {
 2         unsigned int k = 0;
 3         if (n < 0) {
 4             k = -n;
 5             x = 1.0 / x;
 6         } else {
 7             k = n;
 8         }
 9         double ret = 1;
10         while (k != 0) {
11             if (k & 0x1) ret *= x;
12             x *= x; 
13             k>>=1;
14         }
15         return ret;
16     }

MS 2012 math.h

 1 template<class _Ty> inline
 2         _Ty _Pow_int(_Ty _X, int _Y)
 3         {unsigned int _N;
 4         if (_Y >= 0)
 5                 _N = (unsigned int)_Y;
 6         else
 7                 _N = (unsigned int)(-_Y);
 8         for (_Ty _Z = _Ty(1); ; _X *= _X)
 9                 {if ((_N & 1) != 0)
10                         _Z *= _X;
11                 if ((_N >>= 1) == 0)
12                         return (_Y < 0 ? _Ty(1) / _Z : _Z); }}

 

 

 

转载于:https://www.cnblogs.com/lailailai/p/3593904.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值