编程心得

95 篇文章 2 订阅

求某个正整数插入乘号后乘积的最大值

在一个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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值