结合cahtgpt回答
您好,下面是您提供的代码的修改版:
n, k = map(int, input().split())
cho = []
small = 100000
for i in range(n):
a, b = map(int, input().split())
cho.append((a, b))
if min(a, b) < small:
small = min(a, b)
left, right = 1, small
while left <= right: # 二分查找
mid = (left + right) // 2
count = 0
for j in range(n):
a = cho[j][0] // mid
b = cho[j][1] // mid
count += a * b
if count >= k: # 切割的巧克力数量大于给定的 k 个小朋友
left = mid + 1
else:
right = mid - 1
print(right)
主要原因有以下两点:
- 输入格式问题:原代码中第一次循环中的空格缺少了空格;
- 代码逻辑问题:原代码中的查找最大的边长的搜索方式有误,应修改为二分查找的方式实现。
注意这里的二分查找的起始值应该为 1,因为边长最小也为 1。
请确保输入与输出格式的正确,在编码时要注意输入数据的边界检查。