008. 序列中的最大乘积(Largest product in a series)

在下面1000位数中,连续四个数的最大乘积为\(9*9*8*9=5832\):

IMG

寻找连续十三数的最大乘积,这个乘积是多少?

分析:此题解题思路较为直接,分为以下步骤:1)将以上数字存入到TXT文件中,用python导入并存入到一个LIST中;2)从LIST中第0位开始直到第987位,依次求连续十三位数的乘积并存入到结果LIST中;3)求结果LIST的最大值得到结果。

from functools import reduce

def main():
    with open('euler/ep08.txt','r') as f:
        data = ''
        for line in f.readlines():
            data = data + line.strip()
    res = []
    for i in range(988):
        sub = [int(x) for x in data[i:i+13]]
        prod = reduce(lambda x,y:x*y, sub)
        res.append(prod)
    return max(res)