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

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

Ответ: 7

Условие

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

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

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

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

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

Решение

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

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

k = 1

m = 0

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

if f[i] == 'A' and f[i+1] == 'A':

k += 1

m = max(m, k)

else: k = 1

print(m)

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

Ответ: 7.

Приведём решение Тагира Шигербаева на языке Python.

f = open('24.txt').readline().replace('B','*').replace('C','*').split('*')

print(len(max(f, key= len)))

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

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

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

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

m = f.split()

dl = set(len(x) for x in m )

print(max(dl))

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

from re import *

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

reg=r'A+'

print(max(len(x.group()) for x in finditer(reg,s)))

Приведём другое решение данной задачи на языке 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]) and (s[i] = 'A') then begin

curLen := curLen + 1;

if curLen > maxLen then

maxLen := curLen;

end

else

curLen := 1;

writeln(maxLen);

end.

Приведём решение Сергея Донец на языке PascalABC.NET.

begin

ReadAllText('24.txt') .MatchValues('A+')

.Select(w -> w.Length)

.DefaultIfEmpty(0) .Max .Print;

end.

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

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

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