A25731. 编程实现:给定一个正整数M(1≤M≤5)和一个只包含数字的字符串(5<字符串长度≤20)。使用M个乘号插入到字符串中,且两个乘号不能相邻,插入后,生成一个乘法算式。找出一种使乘法算式数值最大的插入方式,并将结果输出。(乘号不能放在字符串的首尾位置)如字符串为123456,插入2个乘号。插入方式有:1*2*3456=6912,1*23*456=10488,1*234*56=13104,1*2345…
填空题
较难
知识点
题目描述
编程实现:
给定一个正整数M(1≤M≤5)和一个只包含数字的字符串(5<字符串长度≤20)。使用M个乘号插入到字符串中,且两个乘号不能相邻,插入后,生成一个乘法算式。找出一种使乘法算式数值最大的插入方式,并将结果输出。(乘号不能放在字符串的首尾位置)
如字符串为123456,插入2个乘号。插入方式有:
1*2*3456=6912,1*23*456=10488,1*234*56=13104,1*2345*6=14070,12*3*456=16416,12*34*56=22848,12*345*6=24840,123*4*56=27552,123*45*6=33210,1234*5*6=37020,
其中乘法算式数值最大是第十种,为37020。输入描述:
第一行输入一个正整数M(1≤M≤5),代表乘号个数
第二行输入一个只包含数字的字符串(5<字符串长度≤20),表示要插入M个乘号的字符串
输出描述:
输出一个整数,表示最大的结果
样例输入:
2
123456样例输出:
37020参考答案
m=int(input())
s=input()
s=s.strip()
mays=[]
for item1,i1 in enumerate(s):
if m>=2:
for item2,i2 in enumerate(s[item1+1:]):
if m>=3:
for item3,i3 in enumerate(s[item2+1:]):
if m>=4:
for item4,i4 in enumerate(s[item3+1:]):
if m>=5:
for item5,i5 in enumerate(s[item4+1:]):
c=s
c=c[:item1+c.count("*")+1]+"*"+c[item1+c.count("*")+1:]
c=c[:item2+item1+1+c.count("*")+1]+"*"+c[item2+item1+1+c.count("*")+1:]
c=c[:item3+item2+1+item1+1+c.count("*")+1]+"*"+c[item3+item2+1+item1+1+c.count("*")+1:]
c=c[:item4+item3+1+item2+1+item1+1+c.count("*")+1]+"*"+c[item4+item3+1+item2+1+item1+1+c.count("*")+1:]
c=c[:item5+item4+1+item3+1+item2+1+item1+1+c.count("*")+1]+"*"+c[item5+item4+1+item3+1+item2+1+item1+1+c.count("*")+1:]
mays.append(c)
if m==4:
c=s
c=c[:item1+c.count("*")+1]+"*"+c[item1+c.count("*")+1:]
c=c[:item2+item1+1+c.count("*")+1]+"*"+c[item2+item1+1+c.count("*")+1:]
c=c[:item3+item2+1+item1+1+c.count("*")+1]+"*"+c[item3+item2+1+item1+1+c.count("*")+1:]
c=c[:item4+item3+1+item2+1+item1+1+c.count("*")+1]+"*"+c[item4+item3+1+item2+1+item1+1+c.count("*")+1:]
mays.append(c)
if m==3:
c=s
c=c[:item1+c.count("*")+1]+"*"+c[item1+c.count("*")+1:]
c=c[:item2+item1+1+c.count("*")+1]+"*"+c[item2+item1+1+c.count("*")+1:]
c=c[:item3+item2+1+item1+1+c.count("*")+1]+"*"+c[item3+item2+1+item1+1+c.count("*")+1:]
mays.append(c)
if m==2:
c=s
c=c[:item1+c.count("*")+1]+"*"+c[item1+c.count("*")+1:]
c=c[:item2+item1+1+c.count("*")+1]+"*"+c[item2+item1+1+c.count("*")+1:]
mays.append(c)
if m==1:
c=s
c=c[:item1+c.count("*")+1]+"*"+c[item1+c.count("*")+1:]
mays.append(c)
result=0
for may in mays:
if may[-1]=="*":
continue
calc=eval(may)
if calc>result:
result=calc
print(int(result))答案解析
评分标准:
7分:能正确输出一组数据;
7分:能正确输出两组数据;
7分:能正确输出三组数据;
7分:能正确输出四组数据;
7分:能正确输出五组数据。
上一题
下一题