求某个正整数插入乘号后乘积的最大值
在一个9位的正整数中插入4个乘号,使分得的5个整数乘积最大。
例如:输入734019862,得到
73*401*9*8*62=130674672
解题思路:
遍历在9位正整数中插入空和乘号的各种字符串组合
筛选出恰有4个乘号的字符串组合
对这些字符串按照乘号分割成5个整数,并计算乘积,乘积最大的打印输出
from itertools import product
n = str(input("Please input n:\n"))
p = ['', '*']
result = []
for i0, i1, i2, i3, i4, i5, i6, i7 in product(p, p, p, p, p, p, p, p):
string = str(n[0]) + i0 + str(n[1]) + i1 + str(n[2]) + i2 + str(n[3]) \
+ i3 + str(n[4]) + i4 + str(n[5]) + i5 + str(n[6]) + i6 + str(n[7]) + i7 + str(n[8])
count = 0
for s in string:
if s == '*':
count += 1
if count == 4:
result.append(string)
max_num = 0
ss = ''
for k in result:
s = k.split('*')
''' 分割成五个整数'''
temp = int(s[0]) * int(s[1]) * int(s[2]) * int(s[3]) * int(s[4])
''' 整数前有0的,运算时会出错,通过int函数转换成可以运算的整数,这是关键所在 '''
if temp >= max_num:
''' 等号不能省!'''
max_num = temp
ss = k
print("{0}={1}".format(ss, max_num))
D:\Python\study\venv\Scripts\python.exe D:/Python/study/test20.py
Please input n:
734019862
73*401*9*8*62=130674672
Process finished with exit code 0