题解 | #求解立方根#
求解立方根
https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca
import java.util.*; import java.text.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case double m = in.nextDouble(); if(m==0){ System.out.println(0.0); } //思路:每次砍一半,求3次方的值是否与m相等 //计算边界 double l = 0, r = 0, mid = 0; DecimalFormat f=new DecimalFormat("0.0"); if (m > 0) { if (m > 1) { //根一定大于1且根一定小于m,{1,m} l=1.0; r=m; } else { //根一定小于1且大于m,{m,1} l=m; r=1.0; } } else { //m: -1<m<0 if (m > -1) { //-0.2*(-0.2)*(-0.2)=0.008; l=-1; r=m; } else { l=m; r=-1; } } //二分:设置差值:0.01 while(l+0.001<r){ mid=(l+r)/2; double n=mid*mid*mid; if(f.format(n).equals(f.format(m))){ System.out.println(f.format(mid)); break; }else if(n>m){ r=mid; }else{ l=mid; } } } } }