Python大贤者福尔乘积

大贤者福尔的数学研究成绩斐然,影响力越来越大,也有很多人向他请教。最近,有人咨询他一个问题。给定若干个整数S=S 1,S 2 ,…,S n,其中若干个连续的数的最大乘积是多少?

福尔觉得这个问题太简单,他想把这个问题作为对你的考验,你能够解出来吗?

输入

输入数据有若干行,每行包含N(1≤N≤18)个空格分隔的整数S,每个整数S i的范围为−10≤S i ≤10。

输出

对每行输入数据,先在单独的行中输出如Case x: ans from-to的测试样例信息,x为测试样例编号,从1开始,ans为满足要求的最大乘积及对应的起止范围,若有多个连续序列满足条件,选择范围最小的序列,若存在多个相同范围的序列,取起始位置最小的序列,起始位置从0开始计算。

示例输入

1
1 2
-1 1
-1 0 1
1 1 9

示例输出

Case 1: 1 0-0
Case 2: 2 1-1
Case 3: 1 1-1
Case 4: 1 2-2
Case 5: 9 2-2

Python:

def f(st, l):
    ans = 1
    for i in range(st, st + l):
        ans *= a[i]
    return ans

a = []
tot = 0
while True:
    try:
        a = [int(x) for x in input().split()]
        n = len(a)
        ma = - 1000
        st = 0
        l = 0
        for i in range(1, n + 1):
            for j in range(n - i + 1):
                t = f(j, i)
                if (t > ma):
                    st = j
                    l = i
                    ma = t
        tot += 1
        print("Case {}: {} {}-{}".format(tot, ma, st, st + l - 1))
    except:
        break

你可能感兴趣的:(Pyhton程序设计,python,算法,开发语言,数据结构)