acwing-790. 数的三次方根
给定一个浮点数 n,求它的三次方根。
输入格式
共一行,包含一个浮点数 n。
输出格式
共一行,包含一个浮点数,表示问题的解。
注意,结果保留 6 位小数。
数据范围
?10000≤n≤10000
输入样例:
1000.00
输出样例:
10.000000
方法一:
二分,由于结果保留6位小数,故当high-low<1e-6时结束算法,此处1e-8偷懒避免边界问题导致WA
#include
using namespace std;
double n;
int main() {
scanf("%lf", &n);
double low = -10000, high = 10000, mid, nn;
while (low < high) {
mid = (low + high) / 2;
nn = mid*mid*mid;
if (fabs(high-low) < 1e-8) {
printf("%0.6lf", mid);
break;
} else if (nn > n) {
high = mid;
} else {
low = mid;
}
}
}