leecode 解题总结:50. Pow(x, n)
来源:互联网 发布:mac 下数据库建模工具 编辑:程序博客网 时间:2024/06/05 04:14
#include <iostream>#include <stdio.h>using namespace std;/*问题:Implement pow(x, n).分析:这是剑指offer的一道题目。用递归来做,注意n的奇偶性我们知道如果n>0,那么x^(-n) = 1 / (x^n),必须确保x^n不为0,则必须确保x!=0输入:2(x) 10(n)0 110 -10 01 00 -110 -21.00000 -2147483648输出:102400.11100.011.00000关键:1 long long nTemp = llabs(n);//取正整数,防止溢出,这里必须用llabs*/class Solution {public:double compute(double x ,long long n){//递归基,n=0,返回1if(0 == n){return 1;}//如果是,n=1,返回x本身else if(1 == n){return x;}double result;long long radix;//如果是偶数,if( (n&1) == 0){radix = n/2;result = compute(x , radix);return (result * result);}//如果是奇数else {radix = (n-1)/2;result = compute(x , radix);return (x * result * result);}} double myPow(double x, int n) {if(0 == n){return 1;}//这种情况实际不允许存在,直接返回0if( n < 0 && x == 0){return 0;} int symbol = n >= 0 ? 1 : -1;long long nTemp = llabs(n);//取正整数,防止溢出,这里必须用llabsdouble result = compute(x , nTemp);if(symbol == -1 )//&& fabs(result) >= 1e-6){result = 1 / result;}return result; }};void process(){double x;int n;double result;Solution solution;while(cin >> x >> n){result = solution.myPow(x , n);cout << result << endl;}}int main(int argc , char* argv[]){process();getchar();return 0;}
0 0
- leecode 解题总结:50. Pow(x, n)
- Leecode-Pow(x,n)
- LeeCode-Pow(x, n)
- [leetcode] 50. Pow(x, n) 解题报告
- [Leetcode] 50. Pow(x, n) 解题报告
- leecode 解题总结:372. Super Pow
- Leetcode #50. Pow(x, n) 幂实现 解题报告
- [leetcode]50. Pow(x, n)@Java解题报告
- Leecode Pow(x, n)实现任意次方函数
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 50. Pow(x, n)
- 二叉树的应用问题
- Weex中文文档
- ffmpeg常用基本命令(转)
- 《javascript设计模式与开发实践》阅读笔记(11)—— 模板方法模式
- 常用正则表达式
- leecode 解题总结:50. Pow(x, n)
- OrCAD中给字母加上横线
- JavaScript面向对象基础
- 软件测试指南:从入门到精通
- Apache Ant安装 验证
- iOS近场通信(蓝牙开发,WiFi开发)
- java程序的种类有
- Android开发:最全面、最易懂的Android屏幕适配解决方案
- tomcat请求乱码问题