浮点数二分查找,时间复杂度o(NlogN)
Python 代码
N, M = map(int, input().split())
nums = list(map(int, input().split()))
MAX = max(nums)
def cal(length):
cnt = 0
for num in nums:
cnt += int(num / length)
return cnt
l, r = 0, MAX
while (r - l) >= 0.001:
mid = (l + r) / 2
if cal(mid) >= M: l = mid
else: r = mid
print('%.2f' % l)