前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >华为oj之求解立方根

华为oj之求解立方根

作者头像
Enjoy233
发布2019-03-05 14:50:15
9190
发布2019-03-05 14:50:15
举报
文章被收录于专栏:大白技术控的技术自留地

题目: 求解立方根

  • 热度指数: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 输入参数的立方根

输入描述:
代码语言:javascript
复制
待求解参数 double类型
输出描述:
代码语言:javascript
复制
输入参数的立方根 也是double类型
输入例子:
代码语言:javascript
复制
216
输出例子:
代码语言:javascript
复制
6.0

在线提交网址: http://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca?tpId=37&tqId=21330&rp=&ru=/ta/huawei&qru=/ta/huawei/question-ranking

已AC代码:

代码语言:javascript
复制
#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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年09月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目: 求解立方根
  • 题目描述
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档