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

Beautiful Numbers问题求解:解决Python实现大数字美丽数判断超时问题

问题根因

你写的代码超时核心问题是遍历逻辑效率太低:

  • 遍历范围是8 ~ n/2,时间复杂度随n线性增长,n超过10万的时候就会出现明显卡顿
  • 每个遍历到的数字都要转字符串做正则校验,额外增加了大量不必要的开销

优化思路

反过来先生成所有小于等于n、仅由8和9组成的cute数,再逐个判断这些cute数能不能整除n即可。
cute数的数量非常少:长度为k的cute数只有2^k个,哪怕n是10位数,总候选数也才2046个,遍历成本可以忽略。

优化后代码

from collections import deque

n = int(input())
cute_nums = deque([8, 9])
found = False

while cute_nums:
    current = cute_nums.popleft()
    if current > n:
        continue
    if n % current == 0:
        found = True
        break
    # 生成更长的cute数:后面拼接8和9
    cute_nums.append(current * 10 + 8)
    cute_nums.append(current * 10 + 9)

print("beautiful" if found else -1)

方案说明

  • 用广度优先搜索生成所有符合要求的cute数,不需要正则校验,生成效率极高
  • 只要找到任意一个能整除n的cute数就直接终止,不需要遍历完所有候选
  • 哪怕n到10^18量级,也能在毫秒级返回结果,完全不会触发超时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:06:03