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)
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 count<k:
i-=1
break
print(i)
我觉得我写的没问题为什么不对啊
蓝桥杯 分巧克力问题 关于#python#的问题,请各位专家解答!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- Freshman小白 2023-03-25 18:32关注
结合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。
请确保输入与输出格式的正确,在编码时要注意输入数据的边界检查。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
- ¥15 孟德尔随机化怎样画共定位分析图
- ¥18 模拟电路问题解答有偿速度
- ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
- ¥15 误删注册表文件致win10无法开启
- ¥15 请问在阿里云服务器中怎么利用数据库制作网站
- ¥60 ESP32怎么烧录自启动程序
- ¥50 html2canvas超出滚动条不显示
- ¥15 java业务性能问题求解(sql,业务设计相关)
- ¥15 52810 尾椎c三个a 写蓝牙地址