wahahaou 2023-03-25 12:41 采纳率: 0%
浏览 43

蓝桥杯 分巧克力问题 关于#python#的问题,请各位专家解答!

img

img

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)
我觉得我写的没问题为什么不对啊
  • 写回答

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. 输入格式问题:原代码中第一次循环中的空格缺少了空格;
    2. 代码逻辑问题:原代码中的查找最大的边长的搜索方式有误,应修改为二分查找的方式实现。

    注意这里的二分查找的起始值应该为 1,因为边长最小也为 1。

    请确保输入与输出格式的正确,在编码时要注意输入数据的边界检查。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月25日

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址