[2670]連続部分最大乗算



質問する


よく知られている部分の最大と問題の変形は、今回は最大乗を求める問題です.解の方式は基本的に同じであるが,連続部分の遮断起点が最大部分と0未満の場合,最大積では累積積が1未満の場合,連続部分を遮断する点が異なる.

コード#コード#

tc = int(input())
mx = 0
tmp = 1
arr = [float(input()) for i in range(tc)]
for i in range(tc):
    n = arr[i]
    tmp *= n

    if tmp < 1:
        tmp = 1

    mx = max(mx, tmp)

if mx == 1:
    print("{:.3f}".format(max(arr)))
else:
    print("{:.3f}".format(mx))

説明:


小数点以下3位に出力しなければならない出力条件に基づいてround()ではなくformatを用いた.
n個の数字入力がいずれも1未満の数字である場合、その最大値が出力される.