题解 | 求解立方根

#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 ; 
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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