leetcode(11):立方根を解く|四捨五入|小数保留|二分法

5209 ワード

1.立方根の二分法を解く
C++小数を保持するのは便利ではありません.牛客コンパイラに直接C言語ヘッダファイルを追加することができます.注意:0桁の小数を残すときは、小数点以下の1位>=5で進位できますが、1位や2位などを残して、小数を残す1位は>5で進位できます.そうしないと切り捨てられます.リファレンス
#include 
#include 
#include 
using namespace std;

double getCubeRoot(double input)
{
    double ans = 0;
    if(input ==0)
        return 0;
    double left = 0,right = input,pre;
    for(double i=right;i>0;)
    {
        if(i*i*i == input)
        {
            return i;
        }else if(i*i*i>input)
        {
            right = i;
            i = (left + right)/2;
        }else{
            left = i;
            i = (left + right)/2;
        }
        
        if(right - left <=0.05)
            return i;
    }
}


int main()
{
    double a;
    cin>>a;
    printf("%.1f",getCubeRoot(a));
}