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

Тек­сто­вый файл со­сто­ит не более чем из 106 сим­во­лов ла­тин­ско­го ал­фа­ви­та. Опре­де­ли­те длину ми­ни­маль­ной под­стро­ки, со­дер­жа­щую не менее 130 сим­во­лов W. Для вы­пол­не­ния этого за­да­ния сле­ду­ет на­пи­сать про­грам­му.

За­да­ние 24

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

Ре­ше­ние.

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

f = open('24.txt')

s = f.readline()

mini = 10**10

count = 0

pos = []

for i in range(len(s)):

if s[i] == 'W':

pos.append(i)

for j in range(len(pos)-129):

count=pos[j+129] - pos[j] + 1

if count < mini:

mini = count

print(mini)

 

В ре­зуль­та­те ра­бо­ты дан­но­го ал­го­рит­ма при вводе дан­ных из файла в усло­вии по­лу­ча­ем ответ  — 2086.

 

Ответ: 2086.

 

При­ме­ча­ние. Путь к файлу не­об­хо­ди­мо ука­зать со­глас­но рас­по­ло­же­нию файла на Вашем ком­пью­те­ре.

 

При­ведём ре­ше­ние Сер­гея Ка­лу­ги­на на языке Python.

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

m = 10**6+1

a = [i for i, x in enumerate(f) if x == 'W']

for j in range(len(a)-129):

k = a[j+129] - a[j] + 1

m = min(m, k)

print(m)

 

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

f = open('24.txt').readline().split('W')

mini = 10**10

for i in range (1,len(f)-129):

mini = min(len('W'.join(f[i:i+129]))+2,mini)

print(mini)

 

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

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

s = s.split('W')[1:-1]

mini = 10**10

for i in range(len(s)-129):

r = 'W' + 'W'.join(s[i:i+128]) + 'W'

mini = min(mini, len(r))

print(mini)

Источник: ЕГЭ по ин­фор­ма­ти­ке 19.06.2023. Ос­нов­ная волна. Раз­ные го­ро­да