题解 | #求解立方根#

求解立方根

http://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca

  1. 首先是核心得二分法。
  2. 其次,如果是负数,需要先变成正数。
  3. 再其次,不管是正数还是负数,只要绝对值小于1,那就设置为 有边界为1.
#include<bits/stdc++.h>

using namespace std;

int main(){
    double n;

    while(cin>>n){

        int flag = 0;

        if(n<0){
            n = -1*n;
            flag = 1;
        }


        double left = 0;
        double right = n>1? n:1;   //如果绝对值小于1,那左边界需要设置为1

        while(right-left>0.00001){//精度
            double mid = (left+right)/2;

            if(pow(mid,3)>n){
                right = mid;
            }else{
                left = mid;
            }

        }


        if(flag){
            right *= -1;
        }

        if(pow(round(right),3)==n){
            printf("%.1f",round(right));
        }else{
            printf("%.1f",right);
        }


    }



    return 0;
}
大厂笔试题题解 文章被收录于专栏

主要是公司笔试题得一些总结

全部评论

相关推荐

三年之期已到我的offer快到碗里来:9硕都比不上9本
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务