题解 | #求解立方根#

求解立方根

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

#include<iostream>
using namespace std;
int main()
{
    double d;
    while(cin>>d)
    {
        bool op=false;
        if(d<0)
        {
            op=true;
            d=d*(-1.0);
        }
        int tmp=0;
        while(abs(d)<1)
        {
            d*=1000;
            tmp++;
        }
        double minv=0;
        double maxv=d;
        double midv=(minv+maxv)/2;
        while(abs(midv*midv*midv-d)>0.001)
        {
            if(midv*midv*midv>d)
            {
                maxv=midv;
            }
            else if(midv*midv*midv<d)
            {
                minv=midv;
            }
            else
            {
                break;
            }
            midv=(maxv+minv)/2;
        }
        while(tmp)
        {
            midv/=10;
            tmp--;
        }
        if(op)
        {
            midv=midv*(-1.0);
        }
        printf("%.1lf\n",midv);
    }
    return 0;
}
全部评论

相关推荐

面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务