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

不使用列表与字符串计算整数连续数位绝对差之和的实现方法

不使用列表、字符串实现连续数位绝对差之和的方案

核心思路

不需要存储所有数位,仅需保留上一次取出的数位值,每次计算当前位与上一位的绝对差并累加即可。原因是绝对差的计算不受顺序影响,|a - b| = |b - a|,从右往左取数位计算结果和从左往右完全一致。

实现代码

n = abs(int(input()))
sum_diff = 0
# 先取出个位作为初始上一位值
prev = n % 10
n = n // 10
while n > 0:
    current = n % 10
    # 累加当前位与上一位的绝对差
    sum_diff += abs(current - prev)
    # 更新上一位值为当前位,进入下一轮计算
    prev = current
    n = n // 10
print(sum_diff)

测试验证

以你举的整数2735为例:

  • 第一步取出个位5,prev=5,剩余待处理数值为273
  • 取出当前位3,计算得|3-5|=2,sum_diff=2,prev更新为3,剩余待处理数值为27
  • 取出当前位7,计算得|7-3|=4,sum_diff=6,prev更新为7,剩余待处理数值为2
  • 取出当前位2,计算得|2-7|=5,sum_diff=11,剩余待处理数值为0,循环结束
  • 最终输出11,和手动计算的|2-7|+|7-3|+|3-5|结果完全一致
    如果输入是个位数,循环不会执行,直接输出0,符合单数字无连续数位差的规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:15:10