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

Тек­сто­вый файл со­сто­ит не более, чем из 1 200 000 сим­во­лов ан­глий­ско­го ал­фа­ви­та.

Опре­де­ли­те мак­си­маль­ное ко­ли­че­ство иду­щих под­ряд сим­во­лов, среди ко­то­рых сим­во­лы Q, R, S в раз­лич­ных ком­би­на­ци­ях (с учётом по­вто­ре­ний) не стоят рядом.

Для вы­пол­не­ния этого за­да­ния сле­ду­ет на­пи­сать про­грам­му.

За­да­ние 24

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

Ре­ше­ние.

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

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

count = mx = 1

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

if s[i] not in'QRS' or s[i+1] not in'QRS':

count+= 1

mx= max(count, mx)

else:

count = 1

print(mx)

 

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

 

Ответ: 544.

 

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

 

При­ведём ре­ше­ние Ев­ге­ния Дж­об­са на языке Python.

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

# длина под­хо­дя­щей по­сле­до­ва­тель­но­сти для s[0]

# она же – те­ку­щее мак­си­маль­ное зна­че­ние длины

c = mx = 1

for i in range(1, len(s)):

# если хотя бы один сим­вол s[i] и s[i-1]

# не яв­ля­ет­ся сим­во­ла­ми Q, R, S

if s[i-1] not in 'QRS' or s[i] not in 'QRS':

# уве­ли­чи­ва­ем те­ку­щую длину стро­ки

c += 1

# пе­ре­опре­де­ля­ем мак­си­маль­ное зна­че­ние

mx = max(mx, c)

else:

# если оба сим­во­ла вхо­дят в Q, R, S

# на­чи­на­ем по­сле­до­ва­тель­ность с

# те­ку­ще­го сим­во­ла

c = 1

print(mx)

 

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

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

p=[-1]+[i for i in range(len(s)-1) if s[i] in 'QRS' and s[i+1] in 'QRS' ]+[len(s)-1]

print(max(p[i+1]-p[i] for i in range(len(p)-1)))

Источник: ЕГЭ по ин­фор­ма­ти­ке 06.04.2023. До­сроч­ная волна