浮点数二分
因为不需要考虑边界,比整数二分简单
- 确定中间值:mid =
l + r
- 检测中间值的性质(对应的是绿色区域的性质,即不满足整个区间的性质):
check(q[mid])
- 如果为
true
,mid
就在绿色区间里,res
就在[l, mid]
- 如果为
false
,mid
就在红色区间里,res
就在[mid, r]
- 更新方式
- 如果上面的判断为
true
,r = mid
- 如果上面的判断为
false
,l = mid + 1
n = float(input())
def search(l, r, n):
while r - l > 1e-8:
mid = (l + r) / 2
# q[mid] * q[mid] * q[mid] >= x
if mid**3 >= n: r = mid
else: l = mid
return l
print("{:.6f}".format(search(-10000, 10000, n)))