Задания
Версия для печати и копирования в MS Word
Тип 24 № 83182
i

Тек­сто­вый файл со­сто­ит из де­ся­тич­ных цифр от 1 до 9, зна­ков «+» и «*» (сло­же­ния и умно­же­ния).

Опре­де­ли­те в при­ла­га­е­мом файле мак­си­маль­ное ко­ли­че­ство сим­во­лов в не­пре­рыв­ной по­сле­до­ва­тель­но­сти, яв­ля­ю­щей­ся кор­рект­ной за­пи­сью ариф­ме­ти­че­ско­го вы­ра­же­ния, со­сто­я­щей из не более чем 40 на­ту­раль­ных чисел и зна­ков ариф­ме­ти­че­ских опе­ра­ций между ними.

В от­ве­те ука­жи­те ко­ли­че­ство сим­во­лов.

За­да­ние 24

Спрятать решение

Ре­ше­ние.

##При­ведём ре­ше­ние на языке Python.

from re import findall

s = open('24.txt').readline()

maxi = max(findall(r'(?=([1-9]+(?:[+*][1-9]+){39}))',s), key = len)

print(len(maxi))

 

Ответ: 368.

 

При­ведём ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python.

def maxlen(s):

a=s.strip('+').split('+') # уда­ля­ем плюсы с на­ча­ла и с конца и раз­би­ва­ем по плю­сам

md=40 # макс. длина

if len(a) <= md: # сум­ми­ру­ем длины чисел и при­бав­ля­ет ко­ли­че­ство плю­сов

return sum(len(x) for x in a) + len(a)-1

else: # пе­ре­би­ра­ем все стро­ки с макс. ко­ли­че­ством сла­га­е­мых и за­по­ми­на­ем сумму длин

ans=[sum(len(x) for x in a[i:i+md]) for i in range(len(a)-(md-1))]

return max(ans)+(md-1) # до­бав­ля­ем ко­ли­че­ство плю­сов

s=open('24.txt').readline().strip()

a=s.replace('*','+').split('++')

print(max(maxlen(s) for s in a))


Аналоги к заданию № 83154: 83182 Все