【问题标题】:what is the most efficient way to get the cyclic sum of an integer?获得整数循环和的最有效方法是什么?
【发布时间】:2020-05-22 07:54:39
【问题描述】:

如果输入是 98352 那么

(9+8+3+5+2)+(8+3+5+2)+(3+5+2)+(5+2)+(2)=27+18+10+7+2=64

因此输出应该是 64

我的方法:

将其转换为字符串,求和,然后在删除第一个数字后递归调用。并重复直到字符串的长度为0。我正在寻找更好的解决方案。

【问题讨论】:

  • 第一个数字出现一次,第二个出现两次,以此类推。无需递归。
  • sum(i*int(digit) for i, digit in enumerate(num, start=1))
  • @pyOliv,它假定num 是字符串;如果您希望它是int,请将其替换为str(num)
  • 你说得对,我已经删除了我的评论,因为它不相关。谢谢。

标签: python string list algorithm


【解决方案1】:

您可以尝试使用itertools.accumulate 反向累加总和:

>>> from itertools import accumulate
>>> inp = 98352
>>> sum(accumulate(map(int, reversed(str(inp)))))
64

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 2011-10-10
    • 2011-12-11
    • 2010-10-12
    • 2013-02-21
    • 2021-12-21
    相关资源
    最近更新 更多