leetcode(11):立方根を解く|四捨五入|小数保留|二分法
5209 ワード
1.立方根の二分法を解く
C++小数を保持するのは便利ではありません.牛客コンパイラに直接C言語ヘッダファイルを追加することができます.注意:0桁の小数を残すときは、小数点以下の1位>=5で進位できますが、1位や2位などを残して、小数を残す1位は>5で進位できます.そうしないと切り捨てられます.リファレンス
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));
}