import sys for line in sys.stdin: num = eval(line) begin = 0 # 如果输入数值大于9则提前除以3,否则除以2,因为2.1^3 > 9 && 2^3 = 8, # 结论:当num < 9时,立方根肯定小于输入值的50%,当 num >= 9时,立方根肯定小于1/3 end = num/3 if num >= 9 else num/2 ret = 0 # 二分查找,逼近 while 1 != round(abs(end-begin)*10, 0): mid = round((begin + end)/2, 1) val = mid**3 if val > num: # 注意这里别自作聪明,提前减0.1,写成 end = mid-0.1 end = mid elif val < num: begin = mid else: ret = mid break if 0 == ret: gap_end = abs(end**3-num) gap_begin = abs(begin**3-num) if gap_end < gap_begin: ret = end else: ret = begin print(ret)