华为oj之求解立方根
2016-09-28 16:04
239 查看
题目: 求解立方根
热度指数:1008 时间限制:1秒 空间限制:32768K题目描述
•计算一个数字的立方根,不使用库函数立方根的逼近迭代方程是 y(n+1) = y(n)*2/3 + x/(3*y(n)*y(n)),其中y0=x. 求给定的x经过n次迭代后立方根的值。
详细描述:
•接口说明
原型:
public static double getCubeRoot(double input)
输入:double 待求解参数
返回值:double 输入参数的立方根
[b]输入描述:[/b]
待求解参数 double类型
[b]输出描述:[/b]
输入参数的立方根 也是double类型
[b]输入例子:[/b]
216
[b]输出例子:[/b]
6.0
在线提交网址:
http://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca?tpId=37&tqId=21330&rp=&ru=/ta/huawei&qru=/ta/huawei/question-ranking
已AC代码:
#include<cstdio> #include<cmath> #include<iostream> using namespace std; double getCubeRoot(double input) { if(input == 0) return (double)0; double pre = 0; double res = 1; while(fabs(res-pre) > 0.000001) // 此处需用math.h中的fabs, 而不是abs { pre = res; res = (2*res + input/(res*res) )/3; // 迭代公式 } return res; } int main() { double in; while(cin>>in) { double res; res = getCubeRoot(in); printf("%.1f", res); // 如果需要四舍五入保留1位小数, 最后应该用res+0.05, n位小数则需加5*pow(0.1, n+1) } return 0; }
知识复习:
abs()主要用于对求整数的绝对值,在“stdlib.h”(或 <cstdlib>)头文件里面。
而fabs()主要是求精度要求更高的double、float型的绝对值,只在<cmath>头文件里。
两者在只#include<cmath>时都可以使用。
相关链接:
http://blog.csdn.net/lzuacm/article/details/51335995
http://ilovers.sinaapp.com/article/迭代法求平方根和立方根
http://blog.csdn.net/never_cxb/article/details/47734519
相关文章推荐
- 华为OJ题目(十五):求解立方根
- 华为OJ(求解立方根)
- 华为OJ1964-求解立方根(牛顿迭代法)
- 【华为OJ】【066-求解立方根】
- 华为OJ1964-求解立方根(牛顿迭代法)
- 【华为oj】求解立方根
- 华为OJ平台——求解立方根
- 华为oj求解立方根
- 华为oj初级 求解立方根
- 华为OJ 初级:求解立方根
- 【华为OJ】求解立方根
- 华为OJ——求解立方根
- 【华为 OJ 】求解立方根
- OJ--------最小公倍数+求解立方根
- 合唱队问题的求解——华为OJ题目
- Java算法---华为oj迷宫问题求解(深度优先搜索)
- Java算法---华为oj迷宫问题求解(广度优先搜索)
- 【华为机试】求解立方根
- 公共字符串长度问题求解——华为OJ题目
- 火车进站问题的求解——华为OJ高级难度题目