import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { /** * 二分法 * 如果一个数num>1,那么这个数的立方根一定在1~num之间。 * 如果一个数num<-1,那么这个数的立方根一定在num~-1 * 如果一个数-1<num<1,那么这个数的立方根一定在-1~1之间 如num = 2.7 * 可以设置左边界为min(-1,2.7) = -1 右边界 max(1,2.7) = 2.7 */ public static double calcCube(double d) { double left = Math.min(-1, d); double right = Math.max(1, d); double mid = 0.0; while (right - left > 0.001) { mid = (right + left) / 2; if (mid * mid * mid > d) { // 说明右边界在mid左侧 right = mid; } else if (mid * mid * mid < d) { left = mid; } else { return mid; } } return left; } public static void main(String[] args) { Scanner in = new Scanner(System.in); double num = in.nextDouble(); double result = calcCube(num); System.out.printf("%.1f", result); } }