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)a,b)
for i in range(1,small):
count=0
for j in range(n):
a=cho[j][0]//i
b=cho[j][1]//i
count+=a*b
if count1
break
print(i)
我觉得我写的没问题为什么不对啊
结合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。
请确保输入与输出格式的正确,在编码时要注意输入数据的边界检查。
不知道你这个问题是否已经解决, 如果还没有解决的话:本文先暂时写这么多,后面有时间我会继续补充哒~
蓝桥杯的python组刚刚推出,参加人数相对可能也没有c和c++那么多,加上蓝桥杯本身也比较好获奖,所以对个四五题拿省二是没问题的,目标是国二甚至国一就要多多练习了。相信更多的人参加可能是为了加分或者其他,蓝桥杯也是个比较好的选择啦。
码字不易,留个赞吧(鞠躬)~