【发布时间】:2013-11-11 23:12:56
【问题描述】:
我有一个家庭作业:在数字 5**200,000 中找到 50,000 个连续数字的最大和。 我知道如果我对这个数字进行 for 循环,它不会在可行的时间内结束。 我试图把这个数字放在一个列表中并遍历列表,但我不明白它是如何工作的?为什么它不像第一种情况那样表现?是什么让它更快? 这是我的代码:
def maxdigits(number,digits):
s=str(number) #conversting the number to a string
l = [int(char) for char in s]
maximum = current = sum(l[:digits])
for i in range(0,len(l)-digits):
current = current-l[i]+l[i+digits]
if current > maximum: maximum = current
return maximum
【问题讨论】:
-
定义“数字 5**200,000 中 50,000 个连续数字的最大和”。这与数字之和有何不同?您是在谈论任何 50,000 个连续数字吗?无论如何,您的问题是关于数学洞察力,而不是代码。
-
是的,我将 5**200000 转换为字符串
-
代码在我的机器上运行良好。
-
我不清楚你在问什么。我想我理解这个任务,你的代码看起来可能是正确的或非常接近。你说这比什么更快?您能否提供您所说的较慢的代码,因为您对它的描述对我来说不够清楚。
标签: python performance loops for-loop python-3.x