πЕГЭ · ИИ-репетитор12 предметов · задания ФИПИ
Главная → Информатика → Задания №24 → Задание i24-04

Задание №24 ЕГЭ Информатика с ответом и решением

Ответ: 42

Условие

Текстовый файл состоит не более чем из 106 символов A, B и C. Определите максимальное количество идущих подряд символов, среди которых каждые два соседних различны.

Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Файл с исходными данными к этому заданию в открытом банке не опубликован — разбирай подход по официальному решению ниже.

Подсказки — как подойти к решению

  1. Файл — сплошная строка из символов A, B и C; читай её целиком или посимвольно и следи, чтобы в данные не попал перевод строки в конце файла.
  2. Достаточно одного прохода: храни предыдущий символ и длину текущей цепочки. Пока соседние символы различны, цепочка продолжается; как только встретились два одинаковых, цепочка обрывается и счёт начинается заново.
  3. Обновляй максимум не только внутри цикла, но и после его окончания — самая длинная цепочка может стоять в самом конце строки. Помни, что при обрыве счётчик сбрасывается в 1: текущий символ уже начало новой цепочки.

Решение

Приведём решение Николая Чуркина (Тимашевск) на языке Python.

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

k = 1

m = 0

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

if f[i] != f[i-1]:

k += 1

else:

m = max(m, k)

k = 1

m = max(m, k)

print(m)

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

Ответ: 42.

Приведём решение Максима Фатихова на языке Python.

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

while 'AA' in f or 'BB' in f or 'CC' in f:

f = f.replace('AA','A A')

f = f.replace('BB','B B')

f = f.replace('CC','C C')

f = f.split()

print(max(len(x) for x in f))

Приведём другое решение данной задачи на языке Pascal.

Для решения данной задачи будем посимвольно считывать текстовый файл. Объявим переменные: maxLen — максимальная длина последовательности, curLen — временное хранение длины последовательности, i — переменная для перебора всех символов, s — строка для работы с символами из файла. Алгоритм будет сравнивать значение текущего символа со значением предыдущего, и если символы будут удовлетворять нужным условиям, то значение счетчика будет увеличиваться на 1.

Приведём решение данной задачи на языке Pascal.

var maxLen, curLen, i: integer;

s: string;

begin

assign(input, '24.txt');

readln(s);

maxLen := 1;

curLen := 1;

for i:=2 to Length(s) do

if s[i] <> s[i-1] then begin

curLen := curLen + 1;

if curLen > maxLen then

maxLen := curLen;

end

else

curLen := 1;

writeln(maxLen);

end.

Типичные ошибки

Решить это задание в тренажёре

В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №24 по информатике