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

Python实现nbDig函数处理大数值统计平方中指定数字出现次数

nbDig函数Python实现方案(适配大数值输入)

Python原生支持任意精度整数计算,不存在其他语言里大整数平方溢出的问题,哪怕n到百万级,k**2的计算结果都是精确的,不需要额外处理大整数运算逻辑。

针对题目给出的n最高到数十万的场景,直接用字符串计数的方案是效率最高、代码最简洁的选择,不需要引入复杂的数位DP等算法,完全可以满足平台的时间限制。

实现逻辑

  • 先把要统计的数字d转为字符串,后续直接用字符串方法做匹配计数,比Python层手写逐位取模判断速度更快(字符串count方法是底层C实现,执行效率远高于Python层面的循环)
  • 遍历0到n的所有整数,计算每个数的平方值后转为字符串
  • 统计每个平方字符串中目标数字字符的出现次数,累加所有次数即为最终结果

代码实现

基础易读版本:

def nbDig(n, d):
    target_char = str(d)
    count = 0
    for num in range(n + 1):
        square = num * num
        count += str(square).count(target_char)
    return count

紧凑写法(逻辑完全一致):

def nbDig(n, d):
    return sum(str(k * k).count(str(d)) for k in range(n + 1))

性能说明

以上实现在n=200000量级(比如题目提到的195856)时,总循环次数不到20万次,Python运行耗时不到0.1秒,远低于Codewars的单测时间阈值。
你可以直接用题目给出的样例验证:传入n=12、d=1时,函数返回7,和预期结果完全一致,同时可以正确覆盖n=0、d=0这类边界场景。

如果后续遇到n到千万级以上的极端场景,再考虑用数位DP的方式跳过逐个遍历的过程即可,当前场景下上述实现是最优选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:18:19