博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode:Pow(x, n)
阅读量:7039 次
发布时间:2019-06-28

本文共 844 字,大约阅读时间需要 2 分钟。

Implement pow(xn).

 

主要利用x^2n = (x^n)*(x^n),  x^2n+1 = (x^n)*(x^n)*x

注意n是负数,对其取反时,可能会溢出

其实0^0(都是整数)是未定义的,因为0^0 = 0^1 / 0^1 = 0 / 0, 0作为除数是未定义的,可以参考。

但是库函数pow(0.0,0) = 1,下面我们也这么处理。                          

如果x是无穷大(即x = numeric_limits<double>::infinity()),如果n>0,返回无穷大,如果n == 0返回1,如果n<0,返回负无穷-numeric_limits<double>::infinity()。(1/0.0 不会出现运行错误,结果是正无穷)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class 
Solution {
public
:
    
double 
pow
(
double 
x,
int 
n) {
        
//基数为1,-1, 0,可以特殊处理
        
//if(x == 1)return 1.0;
        
//else if(x == -1)return n%2 ? -1.0 : 1.0;
        
//else if(x == 0)return 0.0;
        
double 
res = 1.0;
        
//使用long long主要防止n = -2147483648时,取反溢出
        
long 
long 
nn = n;
        
if
(nn < 0)
            
nn = -nn;
        
while
(nn != 0)
        
{
            
if
(nn & 1)
                
res *= x;
            
nn >>= 1;
            
x *= x;
        
}
        
if
(n > 0)
            
return 
res;
        
else 
return 
1/res;
    
}
};

 

本文转自tenos博客园博客,原文链接:http://www.cnblogs.com/TenosDoIt/p/3802902.html,如需转载请自行联系原作者
你可能感兴趣的文章
Confluence 6 SQL Server 测试你的数据库连接
查看>>
React-Native 学习第二天:初识RN的代码
查看>>
《Pandas Cookbook》第06章 索引对齐
查看>>
步态识别领域现准独角兽 银河水滴完成1亿元Pre-A轮融资
查看>>
源码解析Flask的配置文件
查看>>
观点即偏见
查看>>
MySQL · myrocks · collation 限制
查看>>
Zabbix 监控添加触发器报警
查看>>
今天1024,什么会引起程序员的强烈舒适?
查看>>
除了各数字货币,区块链技术真正的用途恐怕是物联网
查看>>
Oracle的数据库管理(一)——逻辑备份与恢复
查看>>
工作流 jbpm
查看>>
写一个 jQuery 插件
查看>>
[译] 存储和处理时间序列数据(“Time Series Databases”第三章)
查看>>
新书《JavaScript面向对象编程指南(第2版)》
查看>>
HTML5跨域开发
查看>>
CDH 5.2中Impala认证集成LDAP和Kerberos
查看>>
SpringBoot之整合Spring Security,为自己的系统提供安全保障
查看>>
DockerCon 巴塞罗那站即将开幕,精彩内容不容错过!
查看>>
MD5Utils 简单计算MD5
查看>>