Если качество картинок Дзен опять уменьшил в приложении, то можно посмотреть материал с моего сайта
Задачи из демоверсии 2026 года по информатике с сайта ФИПИ.
Решение данного задания будет выполнено при помощи старого рекурсивного алгоритма Тигра (вроде так помню никнейм).
План решения:
Написать шаблон программы.
Расписать условия задачи.
Проанализировать вывод результатов работы программы.
Начну с простого понимания того, что код универсален для любых задач 19-21
Единственное, что нужно помнить! Задачи не уровня ЕГЭ, а чуть сложнее требуют всегда доработки!
В нашем случае задача стандартного уровня ЕГЭ.
Показываю стандартную последовательность решения.
Совет человеческий, как от учителя с большим опытом работы: не пренебрегайте аналитическим решением задач 19-21! Важно не просто выучить код и его применять, но и понимать суть самой задачи.
Пункт №1 - Написать шаблон (болванку) программы. Даже не читая задание.))
Открываем Python, пишем код.
Единственное, вам важно посмотреть в начале, сколько куч камней используют игроки. От этого зависит количество аргументов функции.
У нас одна куча камней.
Распишу с комментариями код - программистов прошу смотреть сквозь пальцы))
def f(a, c, m):
'''
a - количество камней в куче (если куч две, то добавляем еще и переменную b),
c - количество совершенных ходов,
m - номер игрока (1 - первый ход Пети, 2 - первый ход Вани,
3 - второй ход Пети, 4 - второй ход Вани)
'''
if :
return c % 2 == m % 2
'''
запомнить! (простое тождество)
'''
if c == m:
return 0
'''
запомнить! (избавились от лишнего дубля)
'''
h = []
'''
список заполняется вызовом функции с совершенными ходами
'''
if (c + 1) % 2 == m % 2:
'''
запомнить! (простое тождество)
'''
return any(h)
'''
запомнить! (any - если хотя-бы один элемент True, то список вернет True
'''
else:
return all(h)
'''
запомнить! (all - вернется True только тогда, когда все элементы списка True)
важное отступление: если в условии игры №19 Петя совершает ошибочный ход, то
этот all заменяется на any, то есть для плохой игры два any
'''
for a in range():
'''
диапазон из условия
'''
for m in range(1, 5):
'''
стандатный диапазон проверки двух ходов (от 1 до 4 включительно)
'''
if f(a, 0, m) == 1:
'''
не забудьте! переменная "с" - всегда сначала равна 0
'''
print(a, m)
'''
выводим количество камней и игрока, который с этих камней победит
'''
break
'''
избавляемся от дублирующих выводов
'''
Теперь заполним нашу болванку данными из задачи.
Вывод прикреплю в виде кода
========== RESTART: C:/Users/Администратор/Desktop/Кулавский/19-21.py ==========
31 1
32 1
33 1
34 1
35 1
36 1
37 1
38 1
39 1
40 1
41 1
42 1
43 1
44 1
45 1
46 1
47 1
48 1
49 1
50 1
51 1
52 1
53 1
54 1
55 1
56 1
57 1
58 1
59 1
60 1
61 1
62 1
63 1
64 1
65 1
66 1
67 1
68 1
69 1
70 1
71 1
72 1
73 1
74 1
75 1
76 1
77 1
78 1
79 1
80 1
81 1
82 1
83 1
84 1
85 1
86 1
87 1
88 1
89 1
90 1
91 1
92 1
93 1
94 1
95 1
96 1
97 1
98 1
99 1
100 1
101 1
102 1
103 1
104 1
105 1
106 1
107 1
108 1
109 1
110 1
111 1
112 1
113 1
114 1
115 1
116 1
117 1
118 1
119 1
120 1
121 1
122 1
123 1
124 2
125 2
126 2
127 3
128 3
129 3
130 3
131 3
132 4
133 4
134 4
496 3
497 3
498 3
499 3
500 3
501 3
502 3
503 3
504 3
505 3
506 3
507 3
508 4
509 4
510 4
В принципе, задача решена.
Останется только посмотреть ответы) и всё))
Начнем с вопроса на задание № 19
Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.
Что сразу вы должны понять: ищем минимальное количество камней, которое приводит к победе Ваню, если он ходит своим первых ходом.
Первый ход Вани - это m = 2
Значит в выводе ищем минимальную запись с двойкой справа.
Скриншот части вывода
Сразу видно - это 124
Задача № 20
Найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: – Петя не может выиграть за один ход; – Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
Данная формулировка говорит о том, что гарантированно Петя выиграет своим вторых ходом, значит m = 3.
Ищем два значения наименьших, рядом с которыми цифра 3.
Это 127 и 128
Задача № 21
Найдите минимальное значение S, при котором одновременно выполняются два условия: – у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; – у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Здесь мы видим, что Ваня гарантированно выиграет своим вторым ходом, значит m = 4.
Ищем наименьшее, рядом с которым цифра 4.
Ответ 132.
Итог и напутствия.
Посмотрите разборы Алексея Михайловича Кабанова, особенно разборы 2022 года, это невероятно крутые видео, в которых можно посмотреть, как он разбирает разные типы задач этим кодом (немного усовершенствованной версией)
Также важно практиковаться!
Если не будет практики, то номера 19-21 вместо решения за максимум 10 минут будете делать все 25(
А то минус эффективность, минус время...
Всем добра!