题目描述
给定一个浮点数 n,求它的三次方根。
输入格式
共一行,包含一个浮点数 n。
输出格式
共一行,包含一个浮点数,表示问题的解。
注意,结果保留 6 位小数。
数据范围
−10000≤n≤10000
输入样例:
1000.00
输出样例:
10.000000
求解思路:
使用二分法,从给定的数据范围-10000~10000中二分寻找一个数,使得这个数的3次幂等于n。
代码:
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
double n = sc.nextDouble();
double l = -10000, r = 10000;
double mid = 0.0;
//使用二分法求解
while(r-l>1e-8) { //保留六位小数,所以所以左边界和有边界的差大于10^-8
mid = (r+l)/2;
if(Math.pow(mid, 3)>=n) { //在中点的左半边
r = mid;
}else {//在中点的右半边
l = mid;
}
}
System.out.print(String.format("%.6f", mid));
sc.close();
}
}
运行结果:
Accepted