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

Python实现数字和为9的序列第N项查询及代码超时问题解决

问题分析与解决

你的代码存在两个核心问题:

  1. 逻辑错误:sumnum函数未返回数字和,导致外部无法获取计算结果,实际运行时会触发NameError。
  2. 效率低下:循环时每次加1而非加9,导致需要遍历大量非9倍数的数,直接引发超时。

优化思路

数字和为9的数必然是9的倍数(数论结论:数字和模9等于原数模9),因此我们只需要在9的倍数中寻找数字和恰好为9的数,无需遍历所有自然数。

修正后的代码

def get_digit_sum(n):
    total = 0
    while n > 0:
        total += n % 10
        n = n // 10
    return total

k = int(input())
num = 9 * k  # 直接定位到第k个9的倍数
while get_digit_sum(num) != 9:
    num += 9  # 每次跳9,只检查9的倍数
print(num)

为什么这样能解决超时

  • 跳过了所有非9倍数的数,循环次数大幅减少:比如原代码找第11项时需要从99遍历到108(10次循环),优化后仅需1次循环。
  • 对于N=1e6的极端情况,循环次数也仅为几十到几百次,完全符合时间要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:48:24