2024-01-10 00:58阅读: 4评论: 0推荐: 0

(坚持每天都写算法)算法复习与学习part1基础算法1-5

  今天是写题,数的的三次方根。

  

   使用二分法,浮点数不能位运算直接/2即可。

  

复制代码
//这道题很难想到二分,二分查找是查找,就是找哪个地方有目标数
//一般是用在区间上的,
//总结:二分要求是有查找条件且是查找,符合这两个条件就可以考虑
//不过这里可以把从0到n的浮点数当成一个区间,看数值范围的话,n的话是10000^1/3<22
//查找条件是mid * mid * mid ,而且用二分的一个原因是,因为l和r总会相等,所以可以锁
//数值吧(近似的数值)

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>

using namespace std;

const int N = 10010;
double x;

double fdbsearch(double l , double r ,double eps){
    while(r - l > eps){
        double mid = (l + r) / 2; // 
        if(mid * mid * mid >= x) r = mid;
        else l = mid;//有加必有减
    }
    return l;
}

int main(){
    cin >> x;
    printf(("%lf") , fdbsearch(-22,22,1e-8));
    return 0;
}
复制代码

  补充:eps的由来是因为题目要求6位小数,也就是精度问题,一般比题目给的还要多出2位小数。

  写的时候又发现我之前的代码想法有问题,也不算有问题,但还是 不显示了吧。

本文作者:程序计算机人

本文链接:https://www.cnblogs.com/clina/p/17955622

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   程序计算机人  阅读(4)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 Lions Pride Audio artist
  2. 2 Salty Sailor David Arkenstone
  3. 3 Stonefire David Arkenstone
Salty Sailor - David Arkenstone
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

Not available