题解 | 求解立方根

#include <complex>
#include <iomanip>
#include <iostream>
using namespace std;

int main() {
    double num;
    cin >> num;
    double low,high,mid;
    double epsilon = 0.01;//精度
    //划分求解区间
    if(num <= -1){
        low = num;
        high = 0;
    }
    else if(num >= 1){
        low = 0;
        high = num;
    }
    else if(num > -1 && num <0){
        low = -1;
        high = 0;
    }
    else{
        low = 0;
        high = 1;
    }
    //对求解区间迭代缩小
    while(high - low > epsilon){
        mid = (high + low) / 2;
        double midcube = mid * mid * mid;
        if(std::abs(midcube - num) < epsilon * epsilon){
            break;
        }
        if(midcube < num){
            low = mid;
        }
        else{
            high = mid;
        }
    }
    double result = (high + low) / 2;//求得的解
    cout << fixed << setprecision(1) << result ; //对输出进行四舍五入
}

注意,先对求解区间进行划分,绝对值大于1 的求解区间是0~本身 这个区间,但是对于绝对值小于1的数,求解区间是0~1

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务