题解 | #求解立方根#
求解立方根
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;
}
}
}
}
}
海康威视公司氛围 1032人发布