题解 | #求解立方根#
求解立方根
http://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca
#第一种:暴力AC
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
double num;
double val;
cin >> num;
for(val = -20; val <= 20 ; val += 0.01){
if(num - val * val * val <= 1e-8){
break;
}
}
cout << fixed << setprecision(1) << val << endl;
return 0;
}
#第二种:二分法
#include<iostream>
#include<iomanip>//输出格式
#include<cmath>
double Binary_search(double num);
using namespace std;
int main(){
double num;
cin >> num;
cout << fixed << setprecision(1) << Binary_search(num) << endl;
return 0;
}
double Binary_search(double num){
double left,right;
left = num > -1 ? -1 : num;
right = num > 1 ? num : 1;
double val;
while(fabs(right - left) > 1e-8){
val = (left + right) / 2;//取中值
if(num - val * val * val <= 1e-8){//选边界
right = val;
}else{
left = val;
}
}
return val;
}