python3 解决P1018乘积最大

xiaosongliu

2018-12-07 12:38:01

题解

python3 可以解决大整数问题,而且字符串转整数很方便,可以节省很多代码。本体关键是找到思路:f[i][k]表示前i个数里面插入k个乘号的最大值。int(str(s)[j + 1:i + 1])表示字符串第j + 1到i的数字组成的整数。

n, k = map(int, input().split())
s = int('1' + input())
f = [[0 for i in range(k + 1)] for j in range(n + 1)]
for i in range(1, n + 1):
    f[i][0] = int(str(s)[1: i + 1])
for k1 in range(1, k + 1):
    for i in range(k1 + 1, n + 1):
        for j in range(k1, i):
            f[i][k1] = max(f[i][k1], f[j][k1 - 1] * int(str(s)[j + 1:i + 1]))
print(f[n][k])