Содержание:
ЕГЭ по информатике 24 задание объяснение
Уровень сложности — повышенный,
Требуется использование специализированного программного обеспечения — нет,
Максимальный балл — 1,
Примерное время выполнения — 8 минут.
Проверяемые элементы содержания: Умение создавать собственные программы (10–20 строк) для обработки символьной информации
Выполнение 24 задания ЕГЭ
Плейлист видеоразборов задания на YouTube:
Задание демонстрационного варианта 2022 года ФИПИ
Последовательности (цепочки) символов

Текстовый файл состоит не более чем из 106 символов X, Y и Z.
Определите максимальное количество идущих подряд символов, среди которых каждые два соседних различны.
Для выполнения этого задания следует написать программу.
Ответ: 35
✍ Решение:
-
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | var f: text; i, k, max: integer; s: string; begin assign(f, 'D:\24.txt'); reset(f); readln(f, s); max := 1; k := 1; // кол-во подряд идущих for i := 2 to length(s) do begin if s[i] <> s[i - 1] then begin inc(k); if k > max then max := k; end else k := 1; end; write(max) end. |
Python:
1 2 3 4 5 6 7 8 9 10 11 | f=open('D:/24.txt') s=f.readline() m=1 k=1 for i in range(1,len(s)): if s[i]!=s[i-1]: k+=1 m=max(k,m) else: k=1 print(m) |
📹 Видеоразбор:
📹 Видеорешение на RuTube здесь

В текстовом файле k7-0.txt находится цепочка из символов латинского алфавита A, B, C.
Найдите длину самой длинной подцепочки, состоящей из символов C.
Ответ: 0
✍ Решение:
-
PascalABC.net:
1 2 3 4 5 6 7 8 9 10 | begin assign(input, 'k7-0.txt'); var s: string; var c: string; read(s); c := 'C'; while c in s do c := c + 'C'; print(length(c) - 1) end. |
Python:
способ 1:
1 2 3 4 5 6 7 8 | with open("k7-0.txt") as Fin: s = Fin.readline() c = 'C' while c in s: # ищем CC, потом CCC и т.д c += 'C' print(len(c)-1 ) # минус 1, чтобы убрать лишнюю (последнюю добавленную С) |
способ 2:
1 2 3 4 5 6 7 8 9 10 11 | f=open('k7-0.txt') s = f.readline() # считали строку m = 0 # макс длина цепочки l = 0 # начальная длина цепочки for i in range(0,len(s)): if s[i]=='C': l+=1 m = max(l,m) # перезаписали Макс длину else: l = 0 # сбрасываем счетчик print(m) |

В текстовом файле k7a-1.txt находится цепочка из символов латинского алфавита A, B, C, D, E.
Найдите длину самой длинной подцепочки, состоящей из символов A, B или C (в произвольном порядке).
Ответ: 16
✍ Решение:
-
PascalABC.net:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | begin assign(input, 'k7a-1.txt'); var s: string; read(s); var k := 0; var maxim := 0; for var i := 1 to length(s) do if s[i] in 'ABC' then begin k += 1; if k > maxim then maxim := k end else k := 0 ; write(maxim) end. |
Python:
1 2 3 4 5 6 7 8 9 10 11 | f = open('k7a-1.txt') s = f.readline() # считали строку m = 0 # макс длина цепочки из "A,B,С" l = 0 # начальная длина цепочки из "A,B,С" for i in range(0,len(s)): if s[i] in'ABC': l+=1 m = max(l,m) # перезаписали Макс длину else: l = 0 # другая буква - сбрасываем счетчик print(m) |

В текстовом файле k7a-6.txt находится цепочка из символов латинского алфавита A, B, C, D, E, F.
Найдите длину самой длинной подцепочки, не содержащей гласных букв.
Ответ: 20
✍ Решение:
-
PascalABC.net:
Вариант 1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | begin assign(input, 'k7a-6.txt'); var s: string; read(s); var k := 0; var maxim := 0; for var i := 1 to length(s) do if s[i] in 'BCDF' then begin k += 1; if k > maxim then maxim := k end else k := 0 ; write(maxim) end. |
Вариант 2:
1 2 3 4 5 6 7 8 9 10 11 12 | begin var s := readAllText('d:\k7a-6.txt').Trim; var (k, max) := (0, 0); foreach var c in s do if not (c in 'AE') then begin k += 1; if k > max then max := k; end else k := 0; print(max) end. |
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 | with open("k7a-6.txt") as F: s = F.readline() # считали строку k = 0 # начальная длина цепочки из "B,C,D,F" Max = 0 # макс длина цепочки из "B,C,D,F" for c in s: if c in 'BCDF': k += 1 if k > Max: Max = k # перезаписали Макс длину else: k = 0 # другая буква - сбрасываем счетчик print(Max) |

В текстовом файле k7b-1.txt находится цепочка из символов латинского алфавита A, B, C, D, E.
Найдите максимальную длину цепочки вида EABEABEABE… (состоящей из фрагментов EAB, последний фрагмент может быть неполным).
Ответ: 7
✍ Решение:
-
PascalABC.net:
- 1 тип = ..EABE — неполный последний фрагмент
- 2 тип = ..EABEB — неполный последний фрагмент
- 3 тип = ..EAB — полный последний фрагмент
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | begin assign(input, 'k7b-1.txt'); var s: string; read(s); var c := 'EAB'; while c in s do begin if c[length(c)] = 'B' then c += 'E' else if c[length(c)] = 'A' then c += 'B' else if c[length(c)] = 'E' then c += 'A'; end; print(length(c) - 1) end. |
Python:
Способ 1:
1 2 3 4 5 6 7 8 9 | with open("k7b-1.txt") as Fin: s = Fin.readline() c = 'EAB' while c in s: # ищем EAB, потом EABE и т.д if c[-1]=="B": c +="E" elif c[-1]=="A": c +="B" elif c[-1]=="E": c +="A" print(len(c)-1) |
Способ 2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | f=open('k7b-1.txt') s = f.readline() m = 0 i = 0 for char in s: if (char == 'E' and i%3 == 0) or \ (char == 'A' and i%3 == 1) or \ (char == 'B'and i%3 == 2): i += 1 m = max(i,m) elif char == 'E': i = 1 else: i = 0 print(m) |

В текстовом файле k7c-1.txt находится цепочка из символов латинского алфавита A, B, C, D, E.
Найдите количество цепочек длины 3, удовлетворяющих следующим условиям:
Ответ: 1280
✍ Решение:
-
PascalABC.net:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | begin assign(input, 'k7c-1.txt'); var s: string; read(s); // весь текст файла var k := 0; var c1 := 'BCD'; var c2 := 'BDE'; var c3 := 'BCE'; for var i := 1 to length(s) - 2 do begin if (s[i] in c1) and (s[i + 1] in c2) and (s[i + 2] in c3) and (s[i] <> s[i + 1]) and (s[i + 1] <> s[i + 2]) then k += 1 end; print(k) end. |
Python:
1 2 3 4 5 6 7 8 9 10 11 12 | with open("k7c-1.txt") as Fin: s = Fin.readline() k = 0 c1 = 'BCD'# строка проверки первого символа c2 = 'BDE'# строка проверки второго символа c3 = 'BCE'# строка проверки третьего символа for i in range(len(s)-2): if s[i] in c1 and s[i+1] in c2 and s[i+2] in c3 \ and s[i]!=s[i+1] and s[i+1]!=s[i+2]: # проверка повтора символов k += 1 print(k) |

В текстовом файле k8-0.txt находится цепочка из символов, в которую могут входить заглавные буквы латинского алфавита A…Z
и десятичные цифры. Найдите длину самой длинной подцепочки, состоящей из одинаковых символов. Если в файле несколько цепочек одинаковой длины, нужно взять первую из них. Выведите сначала символ, из которого строится эта подцепочка, а затем через пробел – длину этой подцепочки.
Ответ: 2 3
✍ Решение:
-
PascalABC.net:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | begin assign(input, 'D:/k8-0.txt'); var s: string; read(s); // весь текст файла var k := 1; //длина текущей цепочки одинаковых символов var max := 0; // макс длина цепочки одинаковых символов var c := s[1]; //символ, из которого строится самая длинная подцепочка for var i := 1 to length(s) - 1 do begin if s[i] = s[i + 1] then begin k += 1; if k > max then begin max := k; c := s[i]; // запомнили новый символ end end else k := 1; end; print(c, max) end. |
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | f=open('k8-0.txt') s=f.readline() k=1 m=0 for i in range (1,len(s)): if s[i]==s[i-1] : k+=1 if k>m: m=k symb=s[i] else: k=1 print(symb,m) |
📹 Видеорешение на RuTube здесь

Текстовый файл 24.txt содержит последовательность из строчных и заглавных букв английского алфавита и цифр, всего не более 106 символов. Определите длину наибольшей убывающей подпоследовательности.
Ответ: 3
✍ Решение:
-
Общая идея:
- В цикле сравнивается текущий элемент с предыдущим (цикл начинается со второго символа строки и заканчивается длиной строки).
- Если текущий элемент меньше предыдущего, то последовательность убывает, — увеличиваем счетчик длины последовательности.
- Начальное значение счетчика длины последовательности должно быть = 1, так как в цикле сравниваются два элемента, и при истинности условия в последовательность уже должна быть равна двум, а не единице (в случае если счетчик обнуляется).
- Увеличивая счетчик, сразу же необходимо сравнивать его значение с максимумом, и выполнять переприсваивание максимума, если это требуется.
- В случае, если условие убывающей последовательности ложно, переходим в блок Иначе (
else
) и сбрасываем счетчик для работы со следующей последовательностью. Счетчик присваиваем единице! - После цикла выводим максимальное значение.
for var i := 2 to length(s) do begin if s[i] < s[i - 1] then |
... begin k += 1; |
... if k > max then max := k; |
... else k := 1; |
PascalABC.net:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | begin assign(input, 'D:/24.txt'); var s: string; read(s); // весь текст файла var k := 1; //длина текущей бывающей последовательности символов var max := 0; // макс длина for var i := 2 to length(s) do begin if s[i] < s[i - 1] then begin k += 1; // увеличиваем счетчик длины последовательности if k > max then max := k; end else k := 1; // сбрасываем счетчик для работы со след. последовательностью end; print(max) end. |
Python:
1 2 3 4 5 6 7 8 9 10 11 12 | F= open("24.txt") s = F.readline() # считали строку (весь текст файла в одной строке) k = 1 maxim = 0 for i in range(1, len(s)): if s[i] < s[i - 1]: k += 1 # увеличиваем счетчик длины последовательности if k > maxim: maxim = k else: k = 1 # сбрасываем счетчик для работы со след. последовательностью print(maxim) |
Работа с числами (цифрами) в текстовом файле

Текстовый файл 24-1.txt состоит не более чем из 106 символов. Определите максимальное нечётное число, записанное в этом файле.
Ответ: 7642289
✍ Решение:
-
PascalABC.net:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | begin assign(input, '24-1.txt'); var s: string; var b:integer; read(s); // весь текст файла находится в s var max := 0; // для максимального нечётного числа var num:integer; var strnum:string; // накапливает строковое представление числа strnum:=''; for var i := 1 to length(s)-1 do begin if s[i].IsDigit() then // проверяем очередной символ - цифра ли это strnum += s[i] //добавляем очередную цифру в число else if (strnum <> '') then //если встретилась не цифра, а strnum не пустая строка begin Val(strnum, num, b); // переводим в число if (num mod 2 <> 0) and (num > max) then // условие для поиска макс четного max := num; strnum:=''; // сбрасываем на начальное значение, чтобы накапливать новое число end; end; // проверка на случай, если самое большое нечётное в самом конце строки if (s[length(s)].isdigit()) then begin Val(strnum, num, b); if (num mod 2 <> 0) and (num > max) then max:= num; end; print(max) end. |
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | F = open("24-1.txt") s = F.readline() # считали строку strnum = '' #пустая строка, strnum накапливает строковое представление числа maxim = 0 # для максимального нечётного числа for sym in s: if sym.isdigit(): # проверяем очередной символ - цифра ли это strnum += sym # добавляем очередную цифру в число elif strnum: # если встретилась не цифра, а strnum не пустая строка num = int(strnum) # переводим в число и сохраняем в num if num % 2 and num > maxim: # условие для поиска макс четного maxim = num strnum = '' # сбрасываем на начальное значение, чтобы накапливать новое число # проверка на случай, если самое большое нечётное в самом конце строки if s[-1].isdigit(): num = int(strnum) if num % 2 and num > maxim: maxim = num print(maxim) |
Работа с отдельными строками файла

Текстовый файл 24-s1.txt состоит не более чем из 106 заглавных латинских букв (A..Z
). Текст разбит на строки различной длины.
Определите количество строк, в которых буква J
встречается чаще, чем буква E
.
Ответ: 482
✍ Решение:
-
Общая идея:
- Так как текст разбит на строки, то используем бесконечный цикл для считывания каждой строки.
- Если строка пустая (т.е. достигнут конец файла), используем досрочный выход из цикла (оператор
break
). - Для подсчета количества встреченных символов используем строковый метод
count()
, который возвращает количество найденных вхождений символа (или сочетания символов), заданного аргументом.
PascalABC.net:
1 2 3 4 5 6 7 8 9 10 11 12 13 | begin assign(input, '24-s1.txt'); var s: string; var k := 0; while true do // бесконечный цикл begin readln(s); // считываем очередную строку if s = '' then break; // если строка пустая (т.е. достигнут конец файла), выходим if s.Count(c -> c = 'J') > s.Count(c -> c = 'E') then k += 1; end; print(k) end. |
Python:
1 2 3 4 5 6 7 8 | f= open("24-s1.txt") k = 0 # счетчик строк while True: # бесконечный цикл s = f.readline() # считываем очередную строку if not s: break # если строка пустая (т.е. достигнут конец файла), выходим if s.count("J") > s.count("E"): k +=1 print(k) |
Мария
Здравствуйте, подскажите, пожалуйста, что не так. У меня ни ваша программа не работает, ни своя.
Program N2;
var b, a, i : integer;
s: string;
k:text;
begin
s:=’C:\24_demo.txt’;
assign(k, s);
reset(k);
b := 1;
a := 1;
for i:=2 to Length(s) do
if (s[i]=s[i-1]) and (s[i]=’X’) then
begin
a:=a+1;
if b < a then b:=a;
end
else a:=1;
writeln(b);
end.
Своя по нахождение максимального кол-во подряд идущих символов
х. Что не так с программой?
Yatogami
Здравствуйте, в задаче №33 ваша программа
begin
assign(input, ‘Путь к файлу’);
var s: string;
read(s); // весь текст файла
var k := 0;
var c1 := ‘BCD’;
var c2 := ‘BDE’;
var c3 := ‘BCE’;
for var i := 1 to length(s) — 2 do
begin
if (s[i] in c1) and (s[i + 1] in c2) and (s[i + 2] in c3)
and (s[i] s[i + 1]) and (s[i + 1] s[i + 2]) then
k += 1
end;
print(k)
end.
Не работает в паскале (путь изменил на свой, в файл добавил символы из вашего, клоню к тому, что это не ошибка невнимательности)
И хотелось бы узнать( если можно) почему моя программа выдает неправильный результат
var count,numb,i:longint;
s:string;
f:text;
mas:array [1..2] of string;
begin
assign(f,’путь к файлу ‘);
reset(f);
readln(f,s);
count:=1;
for i := 1 to length(s) do begin
if ((s[i]=’B’) or (s[i]=’C’) or (s[i]=’D’)) and (count mod 3 =1 )then begin
mas[1]:=s[i]; inc(count);
end;
if ((s[i]=’B’) or (s[i]=’D’) or (s[i]=’E’)) and (count mod 3 =2) and (s[i]mas[1])then begin
mas[2]:=s[i]; inc(count);
end;
if ((s[i]=’B’) or (s[i]=’C’) or (s[i]=’E’)) and (count mod 3 = 0 ) and (s[i] mas[2])then begin
inc(count); inc(numb);
end;
mas[1]:=default(string);
mas[2]:=default(string);
end;
writeln(numb);
end.
amer
Добро пожаловать
У меня вопрос о динамическом распределении памяти, и я не знаю, как писать код. Вы можете помочь???
Вопрос: Дана строка.
написать программу которая печатает самую короткую последовательность одинаковых символов