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

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

Ответ: 1004

Условие

Текстовый файл содержит строки различной длины. Общий объём файла не превышает 1 Мбайт. Строки содержат только заглавные буквы латинского алфавита (ABC…Z).

В строках, содержащих менее 25 букв A, нужно определить и вывести максимальное расстояние между одинаковыми буквами в одной строке.

Пример. Исходный файл:

GIGA

GABLAB

NOTEBOOK

AGAAA

В этом примере во всех строках меньше 25 букв A. Самое большое расстояние между одинаковыми буквами — в третьей строке между буквами O, расположенными в строке на 2-⁠й и 7-⁠й позициях. В ответе для данного примера нужно вывести число 5.

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

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

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

Решение

Будем последовательно считывать строки из файла. В каждой считанной строке будем считать количество букв A и записывать это количество в счётчик count. Если количество букв A в строке будет меньше 25, будем считать расстояние между одинаковыми буквами в строке. Для этого для каждой буквы алфавита с помощью метода LastIndexOf() будем находить последнюю позицию буквы в строке, а с помощью метода IndexOf() будем находить первую позицию буквы в строке. Вычислив разность между последней и первой позициями, будем сравнивать полученный результат с переменной max. Если результат будет больше текущего значения переменной max, то будем присваивать переменной max значение вычисленной разности.

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

var

i, count, max, submax: integer;

j: char;

s: string;

f: text;

begin

assign(f,'C:\inf_26_04_21_24.txt');

reset(f);

s := '';

max := 0;

while not eof(f) do begin

count := 0;

readln(f, s);

for i := 1 to s.Length do begin

if s[i] = 'A' then count := count + 1;

end;

if count < 25 then

for j := 'A' to 'Z' do begin

submax := s.LastIndexOf(j) - s.IndexOf(j);

if submax > max then max := submax;

end;

end;

writeln(max);

end.

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

Ответ: 1004.

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

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

with open("inf_26_04_21_24.txt") as f:

p = f.readlines()

maxx = 0

a = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]

for j in p:

for i in a:

if j.rfind(i) - j.find(i) > maxx and j.count("A") < 25:

maxx = j.rfind(i) - j.find(i)

print(maxx)

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

f=open('inf_26_04_21_24.txt')

rr=0

for x in f:

s=f.readline()

m=[]

r=0

ss=int(len(s))

for x in range (ss+1):

for y in range(ss-1,x,-1):

if s[x]==s[y] and s.count('A')<25:

r=max(r,y-x)

break

rr=max(rr,r)

print(rr)

Приведём другое решение Карпенко Татьяны на языке Python.

lines = open('inf_26_04_21_24.txt').readlines()

max_distance = 0

for line in lines:

if line.count('A') < 25:

for s in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':

max_distance = max(line.rindex(s) - line.index(s), max_distance)

print(max_distance)

Приведём другое решение Петрова Влада на языке Python.

f=open('inf_26_04_21_24.txt').readlines()

mx = 0

for a in f:

if a.count('A') < 25:

m =0

for i in range(len(a)):

if a.count(a[i]) > 1:

r = a.rfind(a[i]) -a.find(a[i])

m = max(m,r)

mx = max(mx,m)

print(mx)

Приведём другое решение Егора Ершова на языке Python.

print(max([max([line.rfind(c) - line.find(c) for c in set(line)]) for line in open('inf_26_04_21_24.txt', 'r') if line.count('A') < 25]))

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

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

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