19 задание егэ информатика программа

Сборник необходимой теории и практики к заданию №19 ЕГЭ 2023 по информатике «Теория игр. Поиск выигрышной стратегии».

  • Вся теория по информатике для ЕГЭ
  • Тренировочные варианты ЕГЭ по информатике

Формулировка задания №19 ЕГЭ 2023 из демоверсии ФИПИ

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в два раза. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.

Игра завершается в тот момент, когда количество камней в куче становится не менее 129. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 129 или больше камней.

В начальный момент в куче было S камней, 1 ≤ S ≤ 128.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Укажите такое значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.

Задания 19-21 | ЕГЭ по информатике | ДЕМО-2023

Самое необходимое по заданию №19 в формате видеоурока

Ниже представлены замечательные материалы, подготовленные Поляковым Константином Юрьевичем, доктором технических наук. В них вы найдёте всё самое полезное для себя — теория, решения заданий и практика.

Источник: ctege.info

ЕГЭ по информатике 2023 — Задания 19-21 (Теория игр на Python)

Продолжаем наш видеокурс по подготовке к ЕГЭ по информатике 2023!

Сегодня разберём задачи из 19, 20 и 21 задания ЕГЭ по информатике. Для этих задач существует спасительный шаблон на Python, который позволяет получить на них правильные ответы и затратить минимум сил и времени.

Приступим к первой серии задач из демоверсии ЕГЭ по информатике 2021 года.

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч (по своему выбору) один камень или увеличить количество камней в куче в два раза. Например, пусть в одной куче 10 камней, а в другой 5 камней; такую позицию в игре будем обозначать (10, 5).

Тогда за один ход можно получить любую из четырёх позиций: (11, 5), (20, 5), (10, 6), (10, 10). Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.

Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее 77. Победителем считается игрок, сделавший последний ход, т.е. первым получивший такую позицию, при которой в кучах будет 77 или больше камней.

В начальный момент в первой куче было семь камней, во второй куче – S камней; 1 ≤ S ≤ 69.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока – значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по этой стратегии игрока, не являющиеся для него безусловно выигрышными, т.е. не являющиеся выигрышными независимо от игры противника.

Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна.

Решим задачу с помощью шаблона на языке программирования Python. Если хотите ознакомится с аналитическим решением задач на теорию игр, можете посмотреть мои статьи по 19 Заданию, 20 Заданию, 21 Заданию. Но с помощью шаблонов на экзамене решать быстрее и легче.

Введём параметр p, который будет олицетворять позицию игры (ход).

Начальная позиция Ход Пети Ход Вани Ход Пети Ход Вани Ход Пети
p 1 2 3 4 5 6

def F(x, y, p): if x + y >= 77 and p==3: return True if x + y < 77 and p==3: return False return F(x+1, y, p+1) or F(x*2, y, p+1) or F(x, y+1, p+1) or F(x, y*2, p+1) for s in range(1, 70): if F(s, 7, 1): print(s)

Заводим функцию F. Она принимает параметры: x — количество камней в одной куче, y — в другой, p-позиция игры.

Дальше описываем победу. Если x+y>=77 и позиция равна 3 (1 Ход Вани), то возвращаем True, что означает победу.

Если, позиция уже равна 3, но сумарное количество камней меньше, чем должно быть для победы, то возвращаем False (проигрыш).

Если мы не вышли на первых двух условиях, то, значит, продолжаем прокручивать ходы, рекурсивно запускаем функцию F.

Т.к. здесь формулировка: «Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети.», то между функциями ставим союз ИЛИ (or).

В конце перебираем все возможные значения для s через цикл for, ищём те значения, которые подходят по условию задачи. Значение p всегда увеличиваем на 1.

Для игры, описанной в предыдущем задании, найдите два таких значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:

− Петя не может выиграть за один ход;

− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.

Найденные значения запишите в ответе в порядке возрастания.

Читайте также:
Зачем нужны бухгалтерские программы

Легко переделать из прошлой задачи.

def F(x, y, p): if x + y >= 77 and p==4: return True if x + y < 77 and p==4: return False if x + y >= 77: return False if p%2==0: return F(x+1, y, p+1) and F(x*2, y, p+1) and F(x, y+1, p+1) and F(x, y*2, p+1) else: return F(x+1, y, p+1) or F(x*2, y, p+1) or F(x, y+1, p+1) or F(x, y*2, p+1) for s in range(1, 70): if F(s, 7, 1): print(s)

Теперь должен выигрывать Петя на своём втором ходе. Поэтому в условиях ставим позицию p=4.

Добавляется третье условие. Если кто-то выиграл, но на первых двух условиях мы не вышли из функции, то, значит, выиграл не тот, кто нам нужен, следовательно, возвращаем Fasle.

Здесь вопрос отличается от 19 задания. Здесь Петя должен побеждать при любом ходе соперника, а не при одном неудачном ходе Вани, поэтому добавляется ещё условие.

Для чётных p (это ходы Пети), возвращаем разные ходы через and, т.к. он должен побеждать в любом случае.

Для нечётных p (это ходы Вани), возвращаем ходы через or.

Ответ:

31 34

Для игры, описанной в задании 19, найдите минимальное значение S, при котором одновременно выполняются два условия:

– у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;

– у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.

Опять используем прошлый шаблон, но немного модернизируем.

def F(x, y, p): if x + y >= 77 and (p==3 or p==5): return True if x + y < 77 and p==5: return False if x + y >= 77: return False if p%2==1: return F(x+1, y, p+1) and F(x*2, y, p+1) and F(x, y+1, p+1) and F(x, y*2, p+1) else: return F(x+1, y, p+1) or F(x*2, y, p+1) or F(x, y+1, p+1) or F(x, y*2, p+1) def F1(x, y, p): if x + y >= 77 and p==3: return True if x + y < 77 and p==3: return False if x + y >= 77: return False if p%2==1: return F1(x+1, y, p+1) and F1(x*2, y, p+1) and F1(x, y+1, p+1) and F1(x, y*2, p+1) else: return F1(x+1, y, p+1) or F1(x*2, y, p+1) or F1(x, y+1, p+1) or F1(x, y*2, p+1) for s in range(1, 70): if F(s, 7, 1): print(s) print() for s in range(1, 70): if F1(s, 7, 1): print(s)

Здесь Ваня должен выигрывать либо на первом своём ходе (p=3), либо на втором своём ходе (p=5).

Т.к. Ваня не должен гарантированно выиграть своим первым ходом, то мы создаём ещё одну функцию F1, похожую на основную функцию F, которая вычисляет, когда Ваня именно гарантированно выигрывает на своём первом ходе (p=3). И, затем, мы из тех чисел, которые получились в первой функции F, исключаем числа, которые получились во второй функции F1.

В первой функции получилось 30,33, а во второй результатов нет. Получается ответ 30.

Следущая вариация задач отличается от первой лишь задачей в 19-ом задании. Рассмотрим демоверсию ЕГЭ по информатике 2022. Так же в этой серии задач будет одна куча, но из-за этого шаблон практически никак не меняется.

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в два раза. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.

Игра завершается в тот момент, когда количество камней в куче становится не менее 29. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, в которой будет 29 или больше камней.

В начальный момент в куче было S камней, 1 ≤ S ≤ 28.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока – значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по этой стратегии игрока, не являющиеся для него безусловно выигрышными, т.е. не являющиеся выигрышными независимо от игры противника.

Укажите такое значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.

Здесь вопрос отличается от прошлой 19-ой задачи. Здесь Петя должен выиграть в любом случае. Мы эту задачу можем воспринимать, как 20-ую из демоверсии 2021. Ведь там тоже игроку нужно обязательно было побеждать. Осталось написать шаблон с соответствующими параметрами.

def F(x, p): if x>=29 and p==3: return True if xand p==3: return False if x>=29: return False if p%2==1: return F(x+1, p+1) and F(x*2, p+1) else: return F(x+1, p+1) or F(x*2, p+1) for s in range(1, 29): if F(s, 1): print(s)

Заводим функцию F. Т.к. у нас одна куча, то она принимает параметры: x — количество камней в куче, p-позиция игры.

Дальше описываем победу. Если x>=29 и позиция равна 3 (1 Ход Вани), то возвращаем True, что означает победу.

Если, позиция уже равна 3, но камней меньше, чем должно быть для победы, то возвращаем False (проигрыш).

Третье условие. Если кто-то выиграл, но на первых двух условиях мы не вышли из функции, то, значит, выиграл не тот, кто нам нужен, следовательно, возвращаем Fasle.

Если мы не вышли на первых трёх условиях, то, значит, продолжаем прокручивать ходы, рекурсивно запускаем функцию F.

Читайте также:
Касперский блокирует запуск программ что делать

Для нечётных p (это ходы Вани), возвращаем разные ходы через and, т.к. он должен побеждать в любом случае. При этом увеличиваем на 1 значение p.

Для чётных p (это ходы Пети), возвращаем ходы через or.

В конце перебираем все возможные значения для s через цикл for, ищём те значения, которые подходят по условию задачи.

Для игры, описанной в задании 19, найдите два таких значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:

− Петя не может выиграть за один ход;

− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.

Найденные значения запишите в ответе в порядке возрастания.

Задача точно такая же, как и в 19 задании, только теперь обязательно должен побежать Петя на своём втором ходу (p=4), при любой игре Вани.

Пишем тот же шаблон, немного отредактировав его.

def F(x, p): if x>=29 and p==4: return True if xand p==4: return False if x>=29: return False if p%2==0: return F(x+1, p+1) and F(x*2, p+1) else: return F(x+1, p+1) or F(x*2, p+1) for s in range(1, 29): if F(s, 1): print(s)

Получается 7 и 13.

Ответ:

7 13

Для игры, описанной в задании 19, найдите значение S, при котором одновременно выполняются два условия:

− у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;

− у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.

Если найдено несколько значений S, в ответе запишите минимальное из них.

Опять используем прошлый шаблон, но немного модернизируем.

def F(x, p): if x>=29 and (p==3 or p==5): return True if xand p==5: return False if x>=29: return False if p%2==1: return F(x+1, p+1) and F(x*2, p+1) else: return F(x+1, p+1) or F(x*2, p+1) def F1(x, p): if x>=29 and p==3: return True if xand p==3: return False if x>=29: return False if p%2==1: return F1(x+1, p+1) and F1(x*2, p+1) else: return F1(x+1, p+1) or F1(x*2, p+1) for s in range(1, 29): if F(s, 1): print(s) print() for s in range(1, 29): if F1(s, 1): print(s)

Здесь Ваня должен выигрывать либо на первом своём ходе (p=3), либо на втором своём ходе (p=5).

Т.к. Ваня не должен гарантированно выиграть своим первым ходом, то мы создаём ещё одну функцию F1, похожую на основную функцию F, которая вычисляет, когда Ваня именно гарантированно выигрывает на своём первом ходе (p=3). И, затем, мы из тех чисел, которые получились в первой функции F, исключаем числа, которые получились во второй функции F1.

В первой функции получилось 12,14, а во второй 14. Получается ответ 12.

На сегодня всё. Мы рассмотрели самые распространённые вариации задач из 19-21 задания и подобрали к ним «противоядие». До новых встреч!

Источник: code-enjoy.ru

Задание 19. Анализ программ. Массивы и матрицы. ЕГЭ 2024 по информатике

За это задание ты можешь получить 1 балл. На решение дается около 5 минут. Уровень сложности: повышенный.
Средний процент выполнения: 38.6%
Ответом к заданию 19 по информатике может быть цифра (число) или слово.

Разбор сложных заданий в тг-канале

Задачи для практики

Задача 1

Паша и Влад играют в увлекательную игру. Перед ними лежат две кучи камней, игроки ходят по очереди, первый ход делает Паша. За один ход каждый игрок может по выбору сделать одно из двух действий:

1. Прибавить к одной (любой) куче один камень.

2. Увеличить количество камней в одной (любой) куче в два раза.

Например, если в одной куче лежит 5 камней, а во второй 7. Обозначим эту ситуацию (5;7). Из этой позиции за один ход можно получить 4 варианта: (6; 7), (10; 7), (5, 8) и (5, 14).

Игра завершается, когда сумма камней в двух кучах становится не менее 61. Побеждает тот игрок, который сделал последний ход, то есть тот игрок, после хода которого сумма камней в двух кучах стала не менее 61. У игроков неограниченное количество камней для ходов.

В начальный момент времени в первой куче было 6 камней, а во второй S, где 1 ≤ S ≤ 54.

Будет говорить, что игрок имеет выигрышную стратегию, если он может победить при любых ходах соперника.

Укажите минимальное значение S, при котором Влад может выиграть своим первым ходом после неудачного хода Паши.

Решение

Чтобы найти минимальное значение, будет делать ходы, увеличивающие количество камней в кучах в как можно большее количество раз. Самый подходящий ход для этих целей — «Умножить на 2».

Для начальной позиции (6;S) возможны два варианта: S (12;S).

Ход Влада: (12;S) -> (24;S) — здесь Влад должен победить, значит 24+S ≥ 61.

S ≥ 37. Наименьшее значение — 37, что противоречит условию S (6; 2S)

Ход Влада: (6; 2S) -> (6; 4S) — здесь Влад должен победить, значит 6+4S ≥ 61

S ≥ 13.75. Наименьшее значение — 14.

Ответ: 14
Показать решение

Задача 2

Паша и Влад играют в увлекательную игру. Перед ними лежит куча камней, игроки ходят по очереди, первый ход делает Паша. За один ход каждый игрок может по выбору сделать одно из трёх действий:

1. Прибавить к куче один камень.

2. Прибавить к куче два камня.

3. Увеличить количество камней в куче в два раза.

Например, если в куче лежит 5 камней, из этой позиции за один ход можно получить 6, 7 или 10 камней.

Игра завершается, когда количество камней в куче становится не менее 23. Побеждает тот игрок, который сделал последний ход, то есть тот игрок, после хода которого количество камней в куче стало не менее 23. У игроков неограниченное количество камней для ходов.

Читайте также:
Что значит вступление в программу эко

В начальный момент времени в куче было S камней, где 1 ≤ S ≤ 22.

Будет говорить, что игрок имеет выигрышную стратегию, если он может победить при любых ходах соперника.

Укажите такое значение S, при котором Паша не может выиграть за один ход, но при любом ходе Паши Влад может выиграть своим первым ходом.

Решение

Влад может выиграть первым ходом (как бы ни играл Паша), если исходно в куче будет S = 11 камней. Тогда после первого хода Паши в куче будет или 12 камней, или 13 камней, или 22 камня. В любом случае Владу достаточно удвоить количество камней и выиграть своим первым ходом.

Ответ: 11
Показать решение

Задача 3

Паша и Влад играют в увлекательную игру. Перед ними лежит куча камней, игроки ходят по очереди, первый ход делает Паша. За один ход каждый игрок может по выбору сделать одно из трёх действий:

1. Прибавить к куче один камень.

2. Прибавить к куче два камня.

3. Увеличить количество камней в куче в два раза.

Например, если в куче лежит 5 камней, из этой позиции за один ход можно получить 6, 7 или 10 камней.

Игра завершается, когда количество камней в куче становится не менее 41. Побеждает тот игрок, который сделал последний ход, то есть тот игрок, после хода которого количество камней в куче стало не менее 41. У игроков неограниченное количество камней для ходов.

В начальный момент времени в куче было S камней, где 1 ≤ S ≤ 40.

Будет говорить, что игрок имеет выигрышную стратегию, если он может победить при любых ходах соперника.

Укажите такое значение S, при котором Паша не может выиграть за один ход, но при любом ходе Паши Влад может выиграть своим первым ходом.

Решение

Влад может выиграть первым ходом (как бы ни играл Паша), если исходно в куче будет S = 20 камней. Тогда после первого хода Паши в куче будет или 21 камень, или 22 камня, или 40 камней. В любом случае Владу достаточно удвоить количество камней и выиграть своим первым ходом.

Ответ: 20
Показать решение

Задача 4

Паша и Влад играют в увлекательную игру. Перед ними лежит куча камней, игроки ходят по очереди, первый ход делает Паша. За один ход каждый игрок может по выбору сделать одно из двух действий:

1. Прибавить к куче два камня.

2. Увеличить количество камней в куче в два раза.

Например, если в куче лежит 5 камней, из этой позиции за один ход можно получить 7 или 10 камней.

Игра завершается, когда количество камней в куче становится не менее 32. Побеждает тот игрок, который сделал последний ход, то есть тот игрок, после хода которого количество камней в куче стало не менее 32. У игроков неограниченное количество камней для ходов.

В начальный момент времени в куче было S камней, где 1 ≤ S ≤ 28.

Будет говорить, что игрок имеет выигрышную стратегию, если он может победить при любых ходах соперника.

Укажите такое наименьшее значение S, при котором Паша не может выиграть за один ход, но при любом ходе Паши Влад может выиграть своим первым ходом.

Решение

Влад может выиграть первым ходом (как бы ни играл Паша), если исходно в куче будет S = 14 камней. Тогда после первого хода Паши в куче будет или 16 камней, или 28 камней. В любом случае Владу достаточно удвоить количество камней и выиграть своим первым ходом.

Ответ: 14
Показать решение

Задача 5

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит несколько фишек. Игроки ходят по очереди, первый ход делает Петя и он просто кладёт фишку на игровое поле.

За любой следующий один ход игрок может положить фишку на игровое поле справа от уже лежавшей на нём, при этом последняя цифра числа на фишке, которая уже лежит на столе, должна совпадать с первой цифрой числа фишки, которую собираются положить. Фишки нельзя поворачивать. Игра завершается в тот момент, когда нельзя будет положить фишку на игровое поле. Победителем считается игрок, сделавший последний ход.

Например, имея фишки 11, 14, 22, 23, 24 и 42, может быть следующая игра:

Петя кидает число 11, тогда Ваня выложит фишку 14, тогда Петя может положить фишку 42, а Ваня выложит 23 или 24 и выиграет, т.к. больше нет фишек, которые начинаются с 3 или 4.

Дан набор фишек: 11, 12, 13, 21, 22, 23, 31, 33

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по этой стратегии игрока, не являющиеся для него безусловно выигрышными, т. е. не являющиеся выигрышными независимо от игры противника.

Для набора фишек, указанных в условии. Укажите начальное значение фишки, при котором Петя выиграет своим втором ходом.

Решение

Если Петя выкинет 33, то Ваня сможет выложить только 31. Тогда Пете достаточно выложить число 13 и выиграть, т.к. больше нет фишек, которые начинаются с 3.

Источник: egeturbo.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru