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

Python代码疑问:输出相同的两段代码为何一段触发Time Limit Exceeded?

两段CodeChef Python代码的差异分析

问题背景

我在CodeChef练习Python编程时,自己编写的解决方案触发了Time Limit Exceeded(超时)错误,但其他用户提交的、输出结果完全相同的代码却能正常通过。以下是两段代码及核心差异分析:

我的代码

t = int(input())
for _ in range(t):
    n = int(input())
    summ = 0
    count = 0
    for i in range(1, n+1):
        summ +=i
        count +=1

    if summ%2==0:
        print(n)
    else:
        print(n-1)

其他用户的代码

t = int(input())
for _ in range(t):
  n = int(input())
  sumN = (n*(n+1))//2
  if sumN%2==0:print(n)
  else:print(n-1)

核心差异

1. 求和逻辑的时间效率天差地别

  • 你的代码通过内层循环累加计算1到n的和,时间复杂度为O(t*n)。当测试用例中的n取值很大(比如10^5或更高)时,循环会执行几十万甚至上百万次,直接导致运行时间超出题目限制。
  • 另一段代码用等差数列求和公式直接计算:n*(n+1)//2,这是数学推导出来的常数时间计算方式,时间复杂度仅为O(t)。不管n多大,每组测试用例只需要一次算术运算,效率碾压循环累加。

2. 冗余代码

你的代码中定义了count变量,但全程没有使用,属于无效冗余代码,虽然不影响功能,但完全可以删除。

3. 代码简洁性(非性能关键)

另一段代码将条件判断和打印语句合并为一行,代码更紧凑,但这不是解决超时问题的核心原因,关键还是求和方式的优化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:33:24