You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodingBat平台make_chocolate代码触发Timed Out超时错误原因排查

问题解答

代码是否会触发无限循环?

不会。
你给出的代码中,while循环的两个判断条件每次迭代都会被收紧:只要进入循环体,big就会被减1,而big初始为非负整数,循环最多执行big次就必然会终止,不存在无限循环的可能。

为什么CodingBat平台会抛出超时错误?

这段代码逻辑正确,但性能实现有缺陷:它采用逐次循环扣减的方式计算可使用的大巧克力数量,循环次数和大巧克力的可用数量线性相关。当平台测试用例传入的big、goal数值极大时,比如big=10^8、goal=5*10^8,代码需要执行上亿次循环才能结束,超过了CodingBat设定的单用例运行时间阈值,就会触发Timed Out报错。

你可以用数学计算直接替代循环,将时间复杂度降到O(1),即可解决超时问题:

def make_chocolate(small, big, goal):
    # 直接计算最多能使用的大巧克力数量
    max_big_use = min(big, goal // 5)
    need_small = goal - max_big_use * 5
    return need_small if small >= need_small else -1

内容的提问来源于stack exchange,提问作者Edward Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 04:06:10