华为机试HJ107:求解立方根

简介: 华为机试HJ107:求解立方根

题目描述:

计算一个数字的立方根,不使用库函数。

保留一位小数。

输入描述:

待求解参数,为double类型(一个实数)

输出描述:

输入参数的立方根。保留一位小数。

示例:

输入:

216


输出:

6.0


解题思路:

这是道数学题,求解数值的立方根,就是求解fx=x^3-C的零根,C就是数值,x就是我们要解的立方根。有两种方法,一种方法就是暴力遍历,将x从某个初始值开始,每0.05进行一次立方计算,判断与C的差值是否大于0,若某个数值所得差值从负数变为正数,该数值近似为解;另一种方法就是牛顿迭代法,计算xn+1=xn+(C/xn^2-xn)/3,若某个xn+1的立方同C差值的绝对值小于某个精度,则认为找到该值,至于为什么用这个式子,可以百度牛顿迭代法,百度百科讲的很清楚。

测试代码:

#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
double func(double t,double num)
{
    if(abs(t*t*t-num)<0.00001)
        return t;
    else
        return func((num/t/t+2*t)/3,num);
}
int main()
{
    double num;
    while(cin>>num)
    {
        cout<<fixed<<setprecision(1)<<func(1.,num)<<endl;
    }
    return 0;
}
相关文章
|
7月前
华为机试HJ69:矩阵乘法
华为机试HJ69:矩阵乘法
|
7月前
|
算法
华为机试HJ82:将真分数分解为埃及分数
华为机试HJ82:将真分数分解为埃及分数
|
7月前
华为机试HJ100:等差数列
华为机试HJ100:等差数列
|
7月前
华为机试HJ75:公共子串计算
华为机试HJ75:公共子串计算
|
7月前
华为机试HJ7:取近似值
华为机试HJ7:取近似值
|
7月前
|
机器学习/深度学习
华为机试HJ35:蛇形矩阵
华为机试HJ35:蛇形矩阵
|
7月前
|
算法 测试技术
华为机试HJ67:24点游戏算法
华为机试HJ67:24点游戏算法
|
7月前
华为机试HJ103:Redraiment的走法
华为机试HJ103:Redraiment的走法
149 2
|
7月前
|
存储
华为机试HJ43:迷宫问题
华为机试HJ43:迷宫问题
|
7月前
|
机器学习/深度学习 C++
华为机试HJ16:购物单
华为机试HJ16:购物单