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

Kattis Combination Lock问题代码报错求助:无法定位错误

问题分析与修正

你的代码核心错误是多算了一圈(360度):初始total =720已经包含了第一步和第二步各需要的一圈(360+360),但你在第一步计算后又额外加了total +=360,导致第二步的旋转度数多算了一整圈,这就是Wrong Answer的原因。

另外还有一个不影响运行的拼写错误:postiton应该是position,建议修正以提高代码可读性。

修正后的代码

def main():
    userInput = [40 if x == 0 else x for x in map(int, input().split())]
    position = userInput[0]
    one = userInput[1]
    two = userInput[2]
    three = userInput[3]
    total = 720  # 第一步和第二步各需转一圈,共720度

    # 第一步:逆时针从起始位置转到第一个密码
    if position > one:
        total += (position - one) * 9
    elif position < one:
        total += (40 - (one - position)) * 9

    # 第二步:顺时针从第一个密码转到第二个密码
    if two > one:
        total += (two - one) * 9
    elif two < one:
        total += (40 - (one - two)) * 9

    # 第三步:逆时针从第二个密码转到第三个密码
    if two > three:
        total += (two - three) * 9
    elif two < three:
        total += (40 - (three - two)) * 9

    print(total)

if __name__ == "__main__":
    main()

关键逻辑验证

以全相同输入10 10 10 10为例:

  • 修正前代码计算结果为1080(多了360度)
  • 修正后代码计算结果为720,符合题目要求(第一步转一圈+第二步转一圈+第三步无旋转)

排查建议

  1. 重新核对题目每一步的旋转要求,确保每一步的基础旋转圈数和方向都正确对应
  2. 用极端测试用例验证(比如所有数字相同、起始位置与第一个密码刚好差一圈等)
  3. 把代码的计算过程拆解成每一步的中间值打印出来,对比手动计算的结果,快速定位差异点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:27:18