Similar presentations:
Избранные задачи ЕГЭ по информатике
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