(剑指Offer)面试题11:数值的整数次方
题目:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
思路:
看题目似乎很简单,循环相乘不就行了吗?不是的。
需要考虑几个问题:
1、exponent为0或者负数;
2、base为0且exponent为负数,其中判断base是否为0,需要考虑base为double类型;
3、高效的计算方法:分治;
代码:
#include <iostream>
#include <stdlib.h> using namespace std; bool equal(double num1,double num2){
if(abs(num1-num2)<0.0000001)
return true;
else
return false;
} double PowerWithUnsignedExponent(double base,unsigned int absExponent){
if(absExponent==0)
return 1;
if(absExponent==1)
return base; double result=PowerWithUnsignedExponent(base,absExponent>>1);
result=result*result;
if((absExponent&0x1)==1)
result=result*base; return result;
} double Power(double base,int exponent){
unsigned int absExponent=(unsigned int)exponent;
if(exponent<0)
absExponent=(unsigned int)(-exponent);
double result=PowerWithUnsignedExponent(base,absExponent); if(exponent<0)
result=1.0/result;
return result;
} int main()
{
cout<<Power(2,-3)<<endl;
cout<<Power(0,-1)<<endl;
cout<<Power(5,0)<<endl;
return 0;
}
在线测试OJ:
http://www.nowcoder.com/books/coding-interviews/1a834e5e3e1a4b7ba251417554e07c00?rp=1
AC代码:
class Solution {
public:
double Power(double base, int exp) {
int exponent=exp>0?exp:(-exp);
double p,result;
if(exponent==0)
return 1;
if(exponent==1)
return base;
p=Power(base,exponent>>1);
result=p*p;
if(exponent&0x1)
result=p*p*base;
if(abs(result-0.0)<0.00000001)
return result;
return exp>0?result:(1/result);
}
};
(剑指Offer)面试题11:数值的整数次方的更多相关文章
- 剑指Offer:面试题11——数值的整数次方(java实现)
题目描述: 实现函数double Power(double base, int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题 思路:本题的重点考察内容是 ...
- 剑指offer_面试题11 数值的整数次方_考察代码的完整性
测试通过代码: package t0825; public class Power { public static void main(String[] args){ System.out.print ...
- 剑指Offer - 九度1514 - 数值的整数次方
剑指Offer - 九度1514 - 数值的整数次方2013-11-30 00:49 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponen ...
- 剑指offer(12)数值的整数次方
题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 题目分析 这道题用传统的方法也可以做,只不过效率太低,这里我们用到快速幂的方法 ...
- 剑指offer十二之数值的整数次方
一.题目 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 二.思路 1.传统方法计算,时间复杂度O(n) 2.递归方式计算,时间复杂度O ...
- 【剑指Offer】12、数值的整数次方
题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解题思路: 本题看似比较简单,是一个简单的指数运算,但需要完 ...
- 剑指offer编程题Java实现——面试题11数值的整数次方
题目: 实现函数double power(double base,int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题. 解题思路:最一般的方法实现数值 ...
- 剑指offer-面试题11.数值的整数次方
题目:实现函数double Power(double base,int exponent),求base的 exponent次方.不得使用库函数,同时不需要考虑大数的问题. 这道题看似很简单: 然而需要 ...
- 剑指offer 面试题43. 1~n整数中1出现的次数
leetcode上也见过一样的题,当时不会做 看了一下解法是纯数学解法就没看,结果剑指offer上也出现了这道题,那还是认真看下吧 对于数字abcde,如果第一位是1,比如12345,即计算f(123 ...
- 剑指offer——面试题11:旋转数组的最小数字
#include"iostream" using namespace std; int GetMinNumber(int *data,int len) { ,right=len-, ...
随机推荐
- mysql概念特性和优化
概念特性 基础命令 连接 监控 优化 字段 索引 查询 共享锁(shared lock)和排它锁(exclusive lock) 也叫读锁(red lock)和写锁(write lock) 多版本并发 ...
- Code forces363D Renting Bikes
Renting Bikes Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Subm ...
- 一个安卓应用 多少个 dalvik 虚拟机
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 一个
- 【推导】【贪心】【高精度】Gym - 101194E - Bet
题意:每个队伍有个赔率pi,如果你往他身上押x元,它赢了,那么你得到x+(1/pi)x元,否则你一分都得不到.问你最多选几支队伍去押,使得存在一种押的方案,不论你押的那几支队伍谁赢,你都能赚得到钱. ...
- CVE-2017-7269—IIS 6.0 WebDAV远程代码执行漏洞分析
漏洞描述: 3月27日,在Windows 2003 R2上使用IIS 6.0 爆出了0Day漏洞(CVE-2017-7269),漏洞利用PoC开始流传,但糟糕的是这产品已经停止更新了.网上流传的poc ...
- Boost汉字匹配 -- 宽字符
原文链接:http://blog.csdn.net/sptoor/article/details/4930069 思路:汉字匹配,把字符都转换成宽字符,然后再匹配. 需要用到以下和宽字符有关的类: ...
- python开发_python操作mysql数据库
如果你还没有准备好开发环境,你不妨花上一小点时间去看看:python开发_mysqldb安装 本篇blog是有关python操作mysql数据的相关内容. 我做了一个demo: 先看运行效果: mys ...
- 分享我用Taker做任务时需要的各种资源的精华帖,方便查阅
http://tieba.baidu.com/p/2310764470 第一名 [Tasker论坛] https://groups.google.com/group/tasker/?pli=1http ...
- STM32 Hardware Development
http://www.st.com/web/en/resource/technical/document/application_note/CD00164185.pdf AN2586 http://w ...
- asp动态数组
本文所说的 ASP 数组是指在 ASP 中以默认语言 VBScript 为语言的数组. 样例: Dim MyArray() for i = 0 to 10 ...