基础算法-浮点二分

基本思路

与上一篇整数二分的思路基本相同,但浮点二分通常是函数求根、开方等问题,比较简单。

题目描述

给定一个浮点数 n,求它的三次方根。

输入格式

输入共一行。
第一行,包含第一个浮点数n。

输出格式

共一行,包含一个浮点数,表示问题的解。
注意,结果保留 6 位小数。

数据范围

−10000≤n≤10000

输入样例

1000.00

输出样例

10.000000

实现方法

  • C++ 实现小数输出的方法
  • 引用头文件 #include<iomanip>,常用cout<<fixed<<setprecision(8)<<(变量名)<<endl;
  • 四舍五入法:
  • floor() 不大于自变量的最大整数
  • ceil() 不小于自变量的最大整数
  • round() 四舍五入到最邻近的整数

1. 方法一(pow函数)

pow(x, y)详解

  • 头文件:math.h/cmath(C++中)。
  • 功能:用于计算x的 y 次幂。
  • 返回值:返回幂指数的结果,即 x 的 y 次幂。若 x 为负数且 y 为 小数,或者 x 为 0 且 y 小于等于 0 ,将出现结果错误。(当 x 为负数要进行特殊处理)
  • 返回类型:double型,当为int,float时会给警告。

实现代码

#include <bits/stdc++.h>
using namespace std;

int main()
{
    double n,res;
    cin>>n;
    if(n>=0)
    {
        res=pow(n,1.0/3);
    }
    else
    {
        res=(-1)*pow((-1)*n,1.0/3);
    }
    cout<<fixed<<setprecision(6)<<res<<endl;
    system("pasue");
    return 0;
}

2. 方法二(STL——cbrt函数)

cbrt(x) 函数详解

  • 头文件:cmath。
  • 功能:用于计算的立方根。
  • 返回值:给定数字 x 的立方根。
  • 返回类型:double型。

实现代码

#include <bits/stdc++.h>
using namespace std;

int main()
{
    double n,res;
    cin>>n;
    res=cbrt(n);
    cout<<fixed<<setprecision(6)<<res<<endl;
    system("pasue");
    return 0;
}

3. 方法三(浮点二分)

实现代码

#include <bits/stdc++.h>
using namespace std;

int main()
{
    double n;
    cin >> n;
    double l=-10000,r=10000;
    while(r-l>1e-8)
    {
        double mid=(l+r)/2.0;
        if (mid*mid*mid>=n)
        {
            r=mid;
        }
        else
        {
            l=mid;
        }
    }
    cout<<fixed<<setprecision(6)<<l<<endl;
    system("pause");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚心求知的熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值