Избранные задачи ЕГЭ по информатике
Содержание
Избранные задачи ЕГЭ по информатике
Задача 15-1 (Демо-2022)
Формулы, которые нужно знать
Задача 15-1 (Демо-2022)
Задача 15-1 (Демо-2022)
Задача 15-1 (Демо-2022) – программа
Задача 15-1 (Демо-2022) – программа
Задача 15-1 (Демо-2022) – PascalABC.NET
Задача 15-1 (Демо-2022) – PascalABC.NET
Задача 15-1 (Демо-2022) – программа
Задача 15-1 (Демо-2022) – PascalABC.NET
Решение задач 15 с помощью программы
Задача 15-2
Задача 15-2
Задача 15-3
Задача 15-4
Задача 15-4 – программа
Задача 15-4 – программа c for-else
Задача 15-4 – PascalABC.NET
Задача 15-4 – кратко
Задача 15-4 – PascalABC.NET
Задача 15-5
Задача 15-5 – PascalABC.NET
Избранные задачи ЕГЭ по информатике
Чтение строки из файла
Чтение строки из файла (PascalABC.NET)
Чтение строки из файла (PascalABC.NET)
Задача 24-1 (демо-2022)
Задача 24-1 (демо-2022)
Задача 24-1 (демо-2022) – PascalABC.NET
Задача 24-1 (демо-2022)
Задача 24-1 (демо-2022) – PascalABC.NET
Задача 24-1 (демо-2022)
Задача 24-1 (демо-2022) – PascalABC.NET
Задача 24-1 (демо-2022)
Задача 24-1 (демо-2022) – PascalABC.NET
Задача 24-2 (Статград)
Задача 24-2 (Статград)
Задача 24-2 (Статград) – PascalABC.NET
Задача 24-2 (Статград)
Задача 24-2 (Статград)
Задача 24-2 (Статград)
Задача 24-3 (А. Комков)
Задача 24-3 (А. Комков)
Задача 24-3 (А. Комков) – PascalABC.NET
Задача 24-3 (А. Комков)
Задача 24-3 (А. Комков) – PascalABC.NET
Задача 24-3 (А. Комков) – PascalABC.NET
Задача 24-4
Задача 24-4
Задача 24-4 – PascalABC.NET
Задача 24-4
Задача 24-4 – PascalABC.NET
Задача 24-4
Задача 24-4 – PascalABC.NET
Задача 24-5
Перебор строк из файла
Перебор строк из файла (PascalABC.NET)
Перебор строк из файла (PascalABC.NET)
Задача 24-5
Задача 24-5
Задача 24-5 – PascalABC.NET
Это интересно
Конец фильма
1.14M
Category: programmingprogramming

Избранные задачи ЕГЭ по информатике

1. Избранные задачи ЕГЭ по информатике

К.Ю. Поляков
Избранные задачи
ЕГЭ по информатике
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

2. Содержание

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
2
Содержание
15 – математическая логика
24 – обработка символьных строк
Языки программирования
Python
Java
К.Ю. Поляков, 2022
C++
PascalABC.NET
C#
!
ФГОС: не разрешён
на углубленном уровне
http://kpolyakov.spb.ru

3. Избранные задачи ЕГЭ по информатике

Задача 15
Математическая логика
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

4. Задача 15-1 (Демо-2022)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
4
Задача 15-1 (Демо-2022)
На числовой прямой даны два отрезка:
D = [17; 58] и C = [29; 80]. Укажите наименьшую
возможную длину такого отрезка A, для которого
логическое выражение
(x ∈ D) → ((¬(x ∈ C) /\ ¬(x ∈ A)) → ¬(x ∈ D))
истинно (т.е. принимает значение 1) при любом
значении переменной х.
D := x ∈ D,
C := x ∈ C,
A := x ∈ A
D (C A D) 1
D C A D 1
C D A 1
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

5. Формулы, которые нужно знать

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
5
Формулы, которые нужно знать
A B A B
A B A B
A B A B
A A B A
A A B A B
A A A
К.Ю. Поляков, 2022
A A A
http://kpolyakov.spb.ru

6. Задача 15-1 (Демо-2022)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
6
Задача 15-1 (Демо-2022)
C D A 1
D = [17; 58]
C = [29; 80]
D
17
C D 1
C
29
58
80
x
29
58
80
x
A
17
12
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

7. Задача 15-1 (Демо-2022)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
7
Задача 15-1 (Демо-2022)
К.Ю. Поляков, Множества и логика в задачах ЕГЭ //
Информатика, № , 2015, с. 38-42.
A B 1
Amin B
C D A 1
Amin C D C D
D = [17; 58]
C = [29; 80]
Amin C D [17; 29]
12
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

8. Задача 15-1 (Демо-2022) – программа

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
8
Задача 15-1 (Демо-2022) – программа
D (C A D) 1
True при x A
def D(x): return 17 <= x <= 58
def C(x): return 29 <= x <= 80
Amin = []
for x in range(0,100):
F = D(x) <= ((not C(x)) <= (not D(x)))
if not F: # без A ложно
Amin.append(x);
print( min(Amin), max(Amin) )
17, 28
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

9. Задача 15-1 (Демо-2022) – программа

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
9
Задача 15-1 (Демо-2022) – программа
Шаг 0,1
def D(x): return 170 <= x <= 580
def C(x): return 290 <= x <= 800
Amin = []
for x in range(0, 1000 ):
F = D(x) <= ((not C(x)) <= (not D(x)))
if not F: # без A ложно
Amin.append(x);
print( min(Amin), max(Amin) )
170, 289
17, 29
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

10. Задача 15-1 (Демо-2022) – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
10
Задача 15-1 (Демо-2022) – PascalABC.NET
Шаг 0,1
##
function D(x: integer) := x in
function C(x: integer) := x in
170..580 ;
290..800 ;
var Amin := new integer[0];
foreach var x in 0..1000
1000 do begin
var F := D(x) <= ((not C(x)) <= (not D(x)));
if not F then // без A ложно
Amin := Amin + |x|;
end;
170, 289
Println( min(Amin), max(Amin) )
17, 29
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

11. Задача 15-1 (Демо-2022) – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
11
Задача 15-1 (Демо-2022) – PascalABC.NET
Шаг 0,1
##
возможные x, где А
должно быть = 1
var D := 170..580;
var C := 290..800;
var allA := (0..1000).Where(
x-> not((x in D) <=
((x not in C) <= (x not in D))));
Print( allA.Min, allA.Max );
Автор: А. Богданов
170, 289
17, 29
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

12. Задача 15-1 (Демо-2022) – программа

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
12
Задача 15-1 (Демо-2022) – программа
Полный перебор всех отрезков
def D(x): return 17 <= x <= 58
def C(x): return 29 <= x <= 80
def F(x, a, b):
return D(x) <= ((not C(x) and
not (a<=x<=b) ) <= (not D(x)))
Amin = (0, 100)
A = [a; b]
шаг 0,1
for a in range(0,100):
for b in range(a,100):
if all( F(x/10,a,b)
for x in range(0,1000) ) and \
(b - a) < (Amin[1] - Amin[0]):
Amin = (a, b)
print( Amin )
17, 29 Автор: Е. Джобс
A
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

13. Задача 15-1 (Демо-2022) – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
13
Задача 15-1 (Демо-2022) – PascalABC.NET
Полный перебор всех отрезков
##
function D(x: real) := (17 <= x) and (x <= 58);
function C(x: real) := (29 <= x) and (x <= 80);
function F(x: real; a, b: integer) :=
D(x) <= ((not C(x) and
not ((a<=x) and (x<=b))) <= (not D(x)));
var Amin := (0,100);
for var a:=0 to 100 do
for var b:=a to 100 do
if (0..1000).All( x->F(x/10,a,b) )
and ((b-a) < (Amin[1]-Amin[0])) then
Amin := (a, b);
17, 29 Автор: Е. Джобс
Println( Amin )
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

14. Решение задач 15 с помощью программы

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
14
Решение задач 15 с помощью программы
Не решайте задачи с отрезками с
помощью программы!
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

15. Задача 15-2

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
15
Задача 15-2
На числовой прямой даны два отрезка:
P = [10; 20] и Q = [25; 55]. Укажите наибольшую
возможную длину такого отрезка A, что
выражение
(x A) → ((x P) (x Q))
истинно при любом значении переменной х.
A ( P Q) P Q A
Amax = [25; 55]
A
Q
P
10
К.Ю. Поляков, 2022
20 25
A
55
x
http://kpolyakov.spb.ru

16. Задача 15-2

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
16
Задача 15-2
A B 1
Amax B
A P Q 1 Amax P Q
Нельзя
перекрыть!
Q
P
10
20 25
55
x
Amax = [25; 55]
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

17. Задача 15-3

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
17
Задача 15-3
На числовой прямой даны два отрезка:
P = [10; 20] и Q = [25; 55]. Укажите наименьшую
возможную длину такого отрезка A, что
выражение
((x P) (x Q)) →(x A)
истинно при любом значении переменной х.
( P Q) A P Q A
Amin = [10; 55]
A
10
К.Ю. Поляков, 2022
P
20 25
Q
55
x
http://kpolyakov.spb.ru

18. Задача 15-4

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
18
Задача 15-4
Для какого наибольшего натурального числа a
выражение
¬ДЕЛ(x, a) (¬ ДЕЛ(x, 21) ¬ДЕЛ(x, 35))
тождественно истинно?
!
A ( D21 D35 ) A D21 D35
Свести к импликации без инверсий!
A D21 D35 ( D21 D35 ) A
Если x делится на 21 или на 35, то x делится на a.
!
a – общий делитель 21 и 35!
К.Ю. Поляков, 2022
Amax = 7
http://kpolyakov.spb.ru

19. Задача 15-4 – программа

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
19
Задача 15-4 – программа
¬ДЕЛ(x, a) (¬ ДЕЛ(x, 21) ¬ДЕЛ(x, 35))
def nD(x,d): return x % d != 0
for A in range(1,1000):
OK = True
for x in range(1,1000):
F = nD(x,A) <= (nD(x,21) and nD(x,35))
if not F:
OK = False
break
if OK:
print( A )
К.Ю. Поляков, 2022
1
7
http://kpolyakov.spb.ru

20. Задача 15-4 – программа c for-else

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
20
Задача 15-4 – программа c for-else
¬ДЕЛ(x, a) (¬ ДЕЛ(x, 21) ¬ДЕЛ(x, 35))
def nD(x,d): return x % d != 0
for A in range(1,1000):
for x in range(1,1000):
if not nD(x,A) <= (nD(x,21) and nD(x,35))
break
else:
print( A )
1
7
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

21. Задача 15-4 – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
21
Задача 15-4 – PascalABC.NET
¬ДЕЛ(x, a) (¬ ДЕЛ(x, 21) ¬ДЕЛ(x, 35))
##
function nD(x, d: integer) := x mod d <> 0;
foreach var A in 1..1000 do begin
var OK := True;
foreach var x in 1..1000 do begin
var F := nD(x,A) <= (nD(x,21) and nD(x,35));
if not F then begin
OK := False;
break
end
end;
if OK then
Println( A )
end
К.Ю. Поляков, 2022
1
7
http://kpolyakov.spb.ru

22. Задача 15-4 – кратко

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
22
Задача 15-4 – кратко
¬ДЕЛ(x, a) (¬ ДЕЛ(x, 21) ¬ДЕЛ(x, 35))
def nD(x, d): return x % d != 0
def F(x, A):
return nD(x,A) <= (nD(x,21) and nD(x,35))
for A in range(1,1000):
if all( F(x,A) for x in range(1,1000) ):
print( A )
массив
логических
значений
К.Ю. Поляков, 2022
1
7
http://kpolyakov.spb.ru

23. Задача 15-4 – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
23
Задача 15-4 – PascalABC.NET
¬ДЕЛ(x, a) (¬ ДЕЛ(x, 21) ¬ДЕЛ(x, 35))
function nD(x, d: integer) := x mod d <> 0;
var AA := 1..1000;
для любого x из
var XX := 1..1000;
XX выполняется
AA.Where( A->XX.All(
x-> nD(x,A) <= (nD(x,21) and nD(x,35))
) ).Println;
1 7
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

24. Задача 15-5

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
24
Задача 15-5
(В. Шубинкин) Для какого наименьшего
натурального числа А формула
((ДЕЛ(x, A) ДЕЛ(x, 36)) ДЕЛ(x, 324)) (A > 100)
тождественно истинна?
def D(x,d): return x % d == 0
allA = [ A for A in range(101,1000)
if all(
(D(x,A) and D(x,36)) <= D(x,324)
for x in range(1, 10000
1000 ) ) ]
print( allA )
101
К.Ю. Поляков, 2022
162
http://kpolyakov.spb.ru

25. Задача 15-5 – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
25
Задача 15-5 – PascalABC.NET
((ДЕЛ(x, A) ДЕЛ(x, 36)) ДЕЛ(x, 324)) (A > 100)
function D(x, d: integer) := x mod d = 0;
var AA := 101..1000;
var XX := 1.. 10000
10000;
AA.Where( A->XX.All(
x-> (D(x,A) and D(x,36)) <= D(x,324)
) ).First.Println;
162
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

26. Избранные задачи ЕГЭ по информатике

Задача 24
Символьные строки
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

27. Чтение строки из файла

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
27
Чтение строки из файла
Классика:
F = open("24.txt")
s = F.readline()
F.close()
Модерн:
with open("24.txt") as F:
s = F.readline()
или:
s = open("24.txt").readline()
print( s[:10] )
К.Ю. Поляков, 2022
# для проверки
http://kpolyakov.spb.ru

28. Чтение строки из файла (PascalABC.NET)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
28
Чтение строки из файла (PascalABC.NET)
Классика:
var F: Text;
var s: string;
Assign( F, '24.txt' );
Reset( F );
Readln( F, s );
Close( F );
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

29. Чтение строки из файла (PascalABC.NET)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
29
Чтение строки из файла (PascalABC.NET)
Классика:
var s: string;
Assign( input, '24.txt' );
Readln( s );
Модерн:
var s := ReadLines( '24.txt' ).First;
s[:10].Println; // для проверки
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

30. Задача 24-1 (демо-2022)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
30
Задача 24-1 (демо-2022)
Текстовый файл состоит из символов P, Q, R и S.
Определите максимальное количество идущих
подряд символов в прилагаемом файле, среди
которых нет идущих подряд символов P.
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

31. Задача 24-1 (демо-2022)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
31
Задача 24-1 (демо-2022)
s = open("24.txt").readline()
prev, L, maxLen = "_", 0, 0
for c in s:
if c == 'P' and prev == 'P':
L = 1
else:
L += 1
maxLen = max(L, maxLen )
prev = c
print( maxLen )
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

32. Задача 24-1 (демо-2022) – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
32
Задача 24-1 (демо-2022) – PascalABC.NET
##
var s := ReadLines('24.txt').First;
var (prev, L, maxLen) := ('_', 0, 0);
foreach var c in s do begin
if (c = 'P') and (prev = 'P') then
L := 1
else begin
L += 1;
maxLen := max( L, maxLen )
end;
prev := c
end;
Print( maxLen );
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

33. Задача 24-1 (демо-2022)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
33
Задача 24-1 (демо-2022)
s = open("24.txt").readline()
L, maxLen = 0, 0
zip(s, s[1:])
s[1:]) :
for cur, nxt in zip(s,
if cur == nxt == 'P':
L = 1
else:
L += 1
maxLen = max(L, maxLen)
print( maxLen )
P
Q
R
s
R
S
s[1:] Q
zip() (P,Q) (Q,R) (R,S)
cur
К.Ю. Поляков, 2022
nxt
S
Автор: Е. Джобс
http://kpolyakov.spb.ru

34. Задача 24-1 (демо-2022) – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
34
Задача 24-1 (демо-2022) – PascalABC.NET
##
Пары
var s := ReadLines('24.txt').First; соседних
var (L, maxLen) := (0, 0);
символов
foreach var pair in s.Pairwise do
if (pair[0] = 'P') and (pair[1] = 'P') then
L := 1
else begin
L += 1;
maxLen := max(L, maxLen)
end;
Print( maxLen );
Автор: Е. Джобс
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

35. Задача 24-1 (демо-2022)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
35
Задача 24-1 (демо-2022)
s = open("24.txt").readline()
while 'PP' in s:
s = s.replace('PP', 'P P')
# PPabcPPPabcdePPPPabcdefPPPPabcdefgh
# P PabcP P PabcdeP P P PabcdefP P P Pabcdefgh
maxLen = max( len(chunk)
for chunk in s.split() )
print( maxLen )
Автор: А. Кабанов
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

36. Задача 24-1 (демо-2022) – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
36
Задача 24-1 (демо-2022) – PascalABC.NET
##
var s := ReadLines('24.txt').First;
while 'PP' in s do
s := s.Replace('PP', 'P P');
var
maxLen := s.Split()
s.Split().Max(
chunk->Length(chunk) ).Print;
.Select( chunk->Length(chunk) )
.Max;
Print( maxLen );
Автор: А. Богданов
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

37. Задача 24-1 (демо-2022)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
37
Задача 24-1 (демо-2022)
s = open("24.txt").readline()
Что плохо?
maxLen = 0
while( s ):
posPP = s.find( "PP" );
if posPP < 0:
maxLen = max( len(s), maxLen )
break
chunk = s[:posPP+1]
maxLen = max( len(chunk), maxLen )
s = s[posPP+1:]
Перераспределение
print( maxLen )
?
памяти!
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

38. Задача 24-1 (демо-2022) – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
38
Задача 24-1 (демо-2022) – PascalABC.NET
##
var s := ReadLines('24.txt').First;
var maxLen := 0;
while Length(s) > 0 do begin
var posPP := Pos( 'PP', s );
if posPP = 0 then begin
maxLen := max( Length(s), maxLen );
break
end;
var chunk := s[:posPP+1];
maxLen := max( Length(chunk), maxLen );
s := s[posPP+1:];
end;
Дольше, чем Python!
Print( maxLen );
!
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

39. Задача 24-2 (Статград)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
39
Задача 24-2 (Статград)
Текстовый файл содержит только заглавные
буквы латинского алфавита (ABC…Z).
Определите максимальное количество идущих
подряд символов, среди которых нет ни одной
буквы A и при этом не менее трёх букв E.
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

40. Задача 24-2 (Статград)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
40
Задача 24-2 (Статград)
s = open("24.txt").readline()
L = maxLen = countE = 0
for c in s:
if c != 'A':
L += 1
if c == 'E':
countE += 1
if countE >= 3 and L > maxLen:
maxLen = L
else:
L = countE = 0
print( maxLen )
Автор: А Богданов (www.youtube.com/watch?v=fHfUY9XerWE)
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

41. Задача 24-2 (Статград) – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
41
Задача 24-2 (Статград) – PascalABC.NET
##
var s := ReadLines('24.txt').First;
var (L, maxLen, countE) := (0, 0, 0);
foreach var c in s do begin
if c <> 'A' then begin
L += 1;
if c = 'E' then
countE += 1;
if (countE >= 3) and (L > maxLen) then
maxLen := L;
end else
(L, countE) := (0, 0)
end;
Print( maxLen );
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

42. Задача 24-2 (Статград)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
42
Задача 24-2 (Статград)
s = open("24.txt").readline()
maxLen = 0
for chunk in s.split('A'):
if chunk.count('E') >= 3:
maxLen = max( len(chunk), maxLen )
print( maxLen )
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

43. Задача 24-2 (Статград)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
43
Задача 24-2 (Статград)
s = open("24.txt").readline()
chunks = s.split('A')
allLen = [ len(c) for c in chunks
if c.count('E') >= 3 ]
maxLen = max( allLen )
print( maxLen )
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

44. Задача 24-2 (Статград)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
44
Задача 24-2 (Статград)
s = open("24.txt").readline()
print( max(
len(chunk) for chunk in s.split('A')
if chunk.count('E') >= 3 ) )
PascalABC.NET
##
ReadLines('24.txt').First
.Split('A')
.Where( c-> c.CountOf('E') >= 3 )
.Max( c-> Length(c) ).Print;
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

45. Задача 24-3 (А. Комков)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
45
Задача 24-3 (А. Комков)
Текстовый файл состоит не более чем из 106
заглавных латинских букв E, G, K. Определите
максимальное количество идущих подряд
символов, среди которых сочетания символов
KEGE повторяются не более двух раз.
!
Для каждой позиции определяем
длину наибольшей подходящей
цепочки, которая заканчивается здесь.
...KEGE......KEGE.......KEGE.....KEGE
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

46. Задача 24-3 (А. Комков)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
46
Задача 24-3 (А. Комков)
s = open("24.txt").readline()
stopPoints = [0, 0, 0]
maxLen = 0
for i in range(3,len(s)):
if s[i-3:i+1] == "KEGE":
stopPoints.append( i-2 )
maxLen = max( i - stopPoints[-3] + 1,
maxLen )
print( maxLen )
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

47. Задача 24-3 (А. Комков) – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
47
Задача 24-3 (А. Комков) – PascalABC.NET
##
var s := ReadLines('24-175.txt').First;
var (stopPoints, maxlen) := (|0, 0, 0|, 0);
for var i:=4 to Length(s) do begin
if s[i-3:i+1] = 'KEGE' then
stopPoints := stopPoints + | i-2 |;
maxLen := max( i - stopPoints[^3] + 1,
maxLen );
end;
Print( maxLen );
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

48. Задача 24-3 (А. Комков)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
48
Задача 24-3 (А. Комков)
...KEGE......KEGE.......KEGE.....KEGE..
p[i]
p[i+1]
p[i+2]
p = s.split("KEGE")
maxLen = 0
for i in range(len(p)-2):
chunk = p[i] + "KEGE" + p[i+1] + \
"KEGE" + p[i+2];
if i != 0: chunk = "EGE" + chunk
if i+2 != len(p)-1: chunk = chunk + "KEG"
maxLen = max( len(chunk), maxLen )
print( maxLen )
Автор: А. Кабанов
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

49. Задача 24-3 (А. Комков) – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
49
Задача 24-3 (А. Комков) – PascalABC.NET
##
var s := ReadLines('24-175.txt').First
.Replace('KEGE', '#');
var maxLen := 0;
var p := s.Split('#');
for var i:=0 to p.Length-3 do begin
var chunk := p[i] + 'KEGE' + p[i+1] +
'KEGE' + p[i+2];
if i <> 0 then chunk := 'EGE' + chunk;
if i+2 <> p.Length-1 then chunk += 'KEG';
maxLen := max( Length(chunk), maxLen );
end;
Print( maxLen );
Автор: А. Кабанов
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

50. Задача 24-3 (А. Комков) – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
50
Задача 24-3 (А. Комков) – PascalABC.NET
##
var s := ReadLines('24-175.txt').First
.Replace('KEGE', '#');
var allLen := s.Split('#')
.Select(s->s.Length).ToArray;
allLen[0] -= 3; allLen[^1] -= 3;
allLen.NWise(3) // все соседние тройки
.Max( v -> v.Sum+2*4+2*3 ).Print
2 "KEGE"
"EGE" "KEG"
Автор: А. Богданов
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

51. Задача 24-4

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
51
Задача 24-4
Текстовый файл содержит строку из заглавных
латинских букв и точек, всего не более чем из 106
символов. Определите максимальное количество
идущих подряд символов, среди которых нет
точек, а количество гласных (букв A, E, I, O, U, Y)
не превышает 3.
BCDAR.BCABCDEBCDFIBCDFGOBCDFGHUBCDFGH
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

52. Задача 24-4

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
52
Задача 24-4
s = open("24.txt").readline()
K = 3
# сколько гласных разрешается
stopPoints = [-1]*(K+1)
maxLen = 0
for i in range(len(s)):
if s[i] == '.':
stopPoints = [i]*(K+1)
if s[i] in "AEIOUY":
stopPoints.insert( 0, i )
maxLen = max( i - stopPoints[K], maxLen )
print( maxLen )
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

53. Задача 24-4 – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
53
Задача 24-4 – PascalABC.NET
##
var s := ReadLines('24-181.txt').First;
var K := 3;
// сколько гласных разрешается
var stopPoints := |-1|*(K+1);
var maxLen := 0;
for var i:=1 to Length(s) do begin
if s[i] = '.' then
stopPoints := |i|*(K+1);
if s[i] in 'AEIOUY' then
stopPoints := |i| + stopPoints;
maxLen := max( i - stopPoints[K], maxLen )
end;
Print( maxLen );
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

54. Задача 24-4

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
54
Задача 24-4
s = open("24.txt").readline()
K = 3
# сколько гласных разрешается
stopPoints = [-1]
maxLen = 0
убираем
for i in range(len(s)):
лишнюю точку
if s[i] == '.':
stopPoints = [i]
if s[i] in "AEIOUY":
активная
if len(stopPoints) > K:
точка - первая
stopPoints.pop(0)
stopPoints.append( i )
maxLen = max( i - stopPoints[0], maxLen )
print( maxLen )
К.Ю. Поляков, 2022
Автор: А. Егоров
http://kpolyakov.spb.ru

55. Задача 24-4 – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
55
Задача 24-4 – PascalABC.NET
##
var s := ReadLines('24.txt').First;
var K := 3;
// сколько гласных разрешается
var stopPoints := |-1|;
var maxLen := 0;
for var i:=1 to Length(s) do begin
if s[i] = '.' then
stopPoints := |i|;
if s[i] in 'AEIOUY' then begin
if Length(stopPoints) > K then
stopPoints := stopPoints[1:];
stopPoints := stopPoints + |i|
end;
maxLen := max( i - stopPoints[0], maxLen )
end;
Print( maxLen );
Автор: А. Егоров
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

56. Задача 24-4

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
56
Задача 24-4
s = open("24.txt").readline()
K = 3
# сколько гласных разрешается
for c in 'AEIOUY':
s = s.replace( c, '*' )
maxLen = 0
for chunk in s.split('.'):
if chunk.count('*') <= K:
maxLen = max( len(chunk), maxLen )
else:
p = chunk.split('*')
K гласных
for i in range(len(p)-K-1):
L = sum(len(p[k])
for k in range(i,i+K+1)) + K
maxLen = max( L, maxLen )
print( maxLen )
Автор: А. Кабанов
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

57. Задача 24-4 – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
57
Задача 24-4 – PascalABC.NET
##
var s := ReadLines('24.txt').First;
var K := 3;
// сколько гласных разрешается
foreach var c in 'AEIOUY' do
s := s.Replace( c, '*' );
var maxLen := 0;
foreach var chunk in s.Split('.') do begin
if chunk.CountOf('*') <= K then
maxLen := max( Length(chunk), maxLen )
else begin
var p := chunk.Split('*');
for var i:=0 to Length(p)-K-1 do begin
var L := p[i:i+K+1].Select(x->Length(x)).Sum + K;
maxLen := max( L, maxLen )
end
end
end;
Автор: А. Кабанов
Print( maxLen );
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

58. Задача 24-5

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
58
Задача 24-5
Текстовый файл состоит не более чем из 106
заглавных латинских букв (A..Z). Текст разбит на
строки различной длины. Необходимо найти
строку, содержащую наименьшее количество
букв A (если таких строк несколько, надо взять
ту, которая в файле встретилась раньше).
Определите, какая буква встречается в этой
строке чаще всего. Если таких букв несколько,
надо взять ту, которая стоит последней в
алфавите. Запишите в ответе эту букву, а
затем – сколько раз она встречается во всем
файле.
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

59. Перебор строк из файла

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
59
Перебор строк из файла
Классика:
F = open("24.txt")
while True:
s = F.readline()
if not s: break
# обработать s
F.close()
Модерн:
for s in open("24.txt"):
# обработать s
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

60. Перебор строк из файла (PascalABC.NET)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
60
Перебор строк из файла (PascalABC.NET)
Классика:
var F: Text;
var s: string;
Assign( F, '24.txt' );
Reset( F );
while not Eof(F) do begin
Readln( F, s );
// обработать s
end;
Close( F );
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

61. Перебор строк из файла (PascalABC.NET)

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
61
Перебор строк из файла (PascalABC.NET)
Классика:
var s: string;
Assign( input, '24.txt' );
while not Eof do begin
Readln( s );
// обработать s
end;
Модерн:
foreach var s in ReadLines('24.txt') do
// обработать s
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

62. Задача 24-5

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
62
Задача 24-5
sMinA, fullText = "", ""
for s in open("24.txt"):
if not sMinA or \
s.count('A') < sMinA.count('A'):
sMinA = s
берём первую
по порядку
fullText += s
...
собираем весь
текст
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

63. Задача 24-5

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
63
Задача 24-5
from string import ascii_uppercase
mostFreq = None
последняя
for c in ascii_uppercase:
по алфавиту
freq = sMinA.count(c)
if not mostFreq or freq >= mostFreq[1]:
mostFreq = (c, freq)
print( mostFreq[0],
fullText.count(mostFreq[0]) )
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

64. Задача 24-5 – PascalABC.NET

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
64
Задача 24-5 – PascalABC.NET
##
var allLines := ReadAllLines('24.txt');
var sMinA := allLines.MinBy( s -> s.CountOf('A') );
var letCount :=
('A'..'Z').Select( c-> (c, sMinA.CountOf(c)) );
var maxCount :=
letCount.MaxBy( \(c,count)->count )[1];
var letter :=
letCount.Where( \(c,count)-> count = maxCount )
.Select( \(c,count)-> c ).Last;
var count := allLines.Select( s->s.CountOf(letter) )
.Sum;
Print( letter, count );
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

65. Это интересно

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
65
Это интересно
Алексей Богданов (Alex Danov)
https://www.youtube.com/AlexDanov
https://vk.com/inf_intensive
Алексей Кабанов
https://www.youtube.com/user/axelofan2010
https://vk.com/ege_info_open
Евгений Джобс
https://www.youtube.com/EvgenijJobs
https://vk.com/inform_web
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru

66. Конец фильма

Избранные задачи ЕГЭ информатике (задачи 15 и 24)
66
Конец фильма
ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
[email protected]
https://kpolyakov.spb.ru
http://egekp.unoforum.pro (форум)
К.Ю. Поляков, 2022
http://kpolyakov.spb.ru
English     Русский Rules