本题利用的是浮点数的二分思想。
可以取左右边界是-100到100,因为二次方就已经到题目要求的-10000到10000了,缩小范围。
由于题目要求输出精度为保留6位小数,设置循环条件为区间大于1e-8(多两位保险)。
还要注意由于此题是浮点数,所以是直接边界等于mid,不用加一。
完整代码:
#include<iostream>
using namespace std;
int main(){
double x;
cin>>x;
double l=-100,r=100;
while(r-l>1e-8){
double mid=(l+r)/2;
if(mid*mid*mid<=x) l=mid;
else r=mid;
}
printf("%.6lf",l);
return 0;
}