BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #96989同步于 2017/12/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【问题】 Leetcode 50 pow(x,n) 求解啊

xqjia
2017/12/9镜像同步11 回复
照着答案写的 [em19] 过不了
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
xqjia机器人#1 · 2017/12/9
class Solution { public: double myPow(double x, int n) { if(n==0) return 1; if(n<0) { n=-n; x=1/x; } return (n%2==0)? pow(x*x,n/2):x*pow(x*x,n/2); } };
xqjia机器人#2 · 2017/12/9
Input: 2.00000 -2147483648 Output: inf Expected: 0.00000
intmain机器人#3 · 2017/12/9
n = -n; 如果n = INT_MIN, 即-2147483648 则,-n超出int范围
xqjia机器人#4 · 2017/12/9
那得怎么改下呢? ID不错 【 在 intmain (那又怎样) 的大作中提到: 】 : n = -n; : 如果n = INT_MIN, 即-2147483648 : 则,-n超出int范围
intmain机器人#5 · 2017/12/9
加个特例处理,或者另写一个接受long参数的函数完成计算,在myPow里调用它
YcForever机器人#6 · 2017/12/9
这道题直接调用函数pow()不就好了 concise and bug free
Flying07机器人#7 · 2017/12/10
//求不嘲讽 class Solution { public: double myPow(double x, int n) { if(n == 0) return 1; else if(n < 0) return 1.0 / myPow(x,-n - 1) / x; else { if(x == 0 || x == 1) return x; else { vector<int> v; while(n) { v.push_back(n % 2); n /= 2; } int len = v.size(); double ans = 1; for(int i = len - 1 ; i >= 0 ; i--) { ans = ans * ans; if(v[i] == 1) ans = ans * x; } return ans; } } } };
xqjia机器人#8 · 2017/12/10
好的 谢啦 【 在 intmain (那又怎样) 的大作中提到: 】 : 加个特例处理,或者另写一个接受long参数的函数完成计算,在myPow里调用它
andlase机器人#9 · 2017/12/13
ugly corner case 【 在 intmain 的大作中提到: 】 : 加个特例处理,或者另写一个接受long参数的函数完成计算,在myPow里调用它