所以这个问题要求在一个大整数中找到十三个连续整数的最大乘积。我已经查看了SO上的其他一些解决方案,但没有一个与我提出的解决方案完全相同。
from numpy import product
def function():
x=#massive integer goes here, x is a string which I then turn into a list.
my_list=[]
for i in x:
my_list.append(int(i))
j=0
while j+12 < len(my_list):
answer=long(0)
my_slice=my_list[j:(j+12)]
test=long(product(my_slice))
if test>answer:
answer=test
j+=1
else:
j+=1
return answer
这段代码返回1666980L,这个数量级太小但我看不出我的错误。
答案 0 :(得分:1)
这里至少有两个问题。
首先,正如评论中指出的abarnert一样,你缩进了你的回复答案,所以它在while循环中。这意味着您尝试第一批数字,获得1666980L,然后只需返回该数字而不尝试任何其他数字。
其次,正如jwodder在评论中指出的那样,[j:j+12]
是一个12个数字的片段,而不是13个.Pix中的切片,范围等都是半开的,这意味着它们包含了所有内容从一开始,直到但不包括结束。所以,您需要[j:j+13]
。
答案 1 :(得分:-1)
你的切片不是13长python切片表示法是[m:n],排除了最后一个索引,所以你需要通过在切片上加一个来计算,即
my_slice=my_list[j:(j+12)]