题解 | #求解立方根#
求解立方根
https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
int main() {
double q;
double a;
cin >> a;
int flag =0;
if(a < 0){
flag = 1;
a=0-a;
}
float f=0.1;
double p = 0.01;
int d=1;
int i=0;
while(1){
if(i * i*i > a){
d = i-1;
break;
}
i++;
}
q=d+f;
while(1){
if(q*q*q > a){
q=q-0.1;
break;
}
q =q+0.1;
}
p=q;
while(1){
if(p*p*p > a){
if(p - q > 0.05){
if(flag == 1){
cout << 0-q-0.1 << endl;
}else
cout << q+0.1 << endl;
return 0;
}else{
if(flag == 1){
cout << 0-q << endl;
}else
cout << q << endl;
return 0;
}
break;
}
p=p+0.01;
}
return 0;
}
// 64 位输出请用 printf("%lld")