Задание 19-21. Теория игр
Решение задач
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: убрать из кучи два камня или убрать из кучи пять камней или уменьшить количество камней в куче в три раза (количество камней, полученное при делении, округляется до меньшего). Например, из кучи в 20 камней за один ход можно получить кучу из 18, 15 или 6 камней.
Игра завершается, когда количество камней в куче становится не более 19. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 19 или меньше камней.
В начальный момент в куче было S камней, S ≥ 20.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Ответьте на следующие вопросы:
Задание 19. Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.
Задание 20. Найдите два наименьших значения S, когда Петя имеет выигрышную стратегию, причём одновременно выполняются два условия:
− Петя не может выиграть за один ход;
− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
Задание 21. Найдите минимальное значение S, при котором одновременно выполняются два условия:
– у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;
– у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
19) 60
20) 62, 63
21) 64
Последовательность ходов
И П В П В
0 1 2 3 4
"""
def f(s, m, F=all):
if s <= 19:
return m % 2 == 0
if m == 0:
return 0
h = [f(s - 2, m - 1), f(s - 5, m - 1), f(s // 3, m - 1)]
return any(h) if (m - 1) % 2 == 0 else F(h)
#Ваня выигрывает при любом ходе Пети, оставляем all
print('19)', [s for s in range(20, 200) if f(s, 2)])
print('20)', [s for s in range(20, 200) if not f(s, 1) and f(s, 3)])
print('19)', [s for s in range(20, 200) if not f(s, 2) and f(s, 4)])
Вывод
19) [60, 61]
20) [62, 63, 65, 66, 180, 181, 182, 183, 184, 185]
19) [64, 67, 68, 186, 187]
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч (по своему выбору) один камень, либо увеличить количество камней в куче в два раза. Например, пусть в одной куче 10 камней, а в другой 7 камней; такую позицию в игре будем обозначать (10, 7). Тогда за один ход можно получить любую из четырёх позиций: (11, 7), (20, 7), (10, 8), (10, 14). Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
Игра завершается в тот момент, когда произведение количеств камней в кучах становится не менее 144. Победителем считается игрок, сделавший последний ход, т. е. первым получивший такую позицию, что произведение количеств камней в кучах будет 144 или больше.
В начальный момент в первой куче был один камень, во второй куче было S камней:
1 ≤ S ≤ 142.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Ответьте на следующие вопросы:
Задание 19. Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, при котором такая ситуация возможна.
Задание 20. Найдите два наименьших значения S, при которых Петя имеет выигрышную стратегию, причём одновременно выполняются два условия:
− Петя не может выиграть за один ход;
− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
Задание 21. Найдите минимальное значение S, при котором одновременно выполняются два условия:
– у Пети есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Вани;
– у Пети нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
19) 36
20) 35, 70
21) 69
"""
И П В П В
0 1 2 3 4
"""
def f(a, b, m, F = all):
if a * b >= 144:
return m % 2 == 0
if m == 0:
return 0
h = [f(a+1, b, m-1), f(a*2, b, m-1), f(a, b+1, m-1), f(a, b*2, m-1)]
return any(h) if m % 2 != 0 else F(h)
#Ваня выиграл своим первым ходом после неудачного первого хода Пети
print('19)', [s for s in range(1, 143) if f(1, s, 2, any)])
print('20)', [s for s in range(1, 143) if f(1, s, 3) and not f(1, s, 1)])
print('21)', [s for s in range(1, 143) if f(1, s, 4) and not f(1, s, 2)])
Вывод;
19) [36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142]
20) [35, 70]
21) [69]
(И. Баженов) Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит две кучи камней. Игроки ходят по очереди, первый ход делает Петя. У каждого игрока есть 4 варианта хода: 1) добавить четыре камня в первую кучу; 2) добавить три камня во вторую кучу; 3) увеличить в 2 раза количество камней в первой куче; 4) увеличить в 3 раза количество камней во второй куче. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
Игра завершается в тот момент, когда суммарное количество камней в двух кучах становится не менее 178. Победителем считается игрок, сделавший последний ход, т. е. первым получивший суммарно в двух кучах 178 или больше камней.
В начальный момент в первой куче был 21 камень, во второй куче было S камней; 1 ≤ S ≤ 156.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Ответьте на следующие вопросы:
Задание 19. Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, при котором такая ситуация возможна.
Задание 20. Найдите сумму всех значений S, при которых Петя имеет выигрышную стратегию, причём одновременно выполняются два условия:
− Петя не может выиграть за один ход;
− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Задание 21. Найдите произведение всех значений S, при которых одновременно выполняются два условия:
– у Пети есть выигрышная стратегия, позволяющая ему выиграть первым, вторым или третьим ходом при любой игре Вани;
– у Пети нет стратегии, которая позволит ему гарантированно выиграть первым или вторым ходом.
19) 18
20) 253
21) 1004640
"""
И П В П В П
0 1 2 3 4 5
"""
def f(a, b, m, F = all):
if a + b >= 178:
return m % 2 == 0
if m == 0:
return 0
h = [f(a + 4, b, m - 1), f(a, b + 3, m - 1), f(a * 2, b, m - 1), f(a, b * 3, m - 1)]
return any(h) if m % 2 != 0 else F(h)
import math
#Ваня выиграл своим первым ходом после неудачного первого хода Пети
print('19)', min([s for s in range(1, 157) if f(21, s, 2, any)]))
print('20)', sum([s for s in range(1, 157) if f(21, s, 3) and not f(21, s, 1)]))
print('21)', math.prod([s for s in range(1, 157) if f(21, s, 5) and not f(21,s,3) and not f(21, s, 1)]))
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в два раза. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 129. Победителем считается игрок, сделавший последний ход, т. е. первым получивший кучу из 129 или больше камней.
В начальный момент в куче было S камней, 1 ≤ S ≤ 128.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Укажите такое значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.
Ответьте на следующие вопросы:
Задание 19. Найдите такое значение S, при котором Петя не может выиграть за один ход, но Ваня выигрывает своим первым ходом после любого хода Пети.
Задание 20. Найдите два наименьших значения S, когда Петя имеет выигрышную стратегию, причём одновременно выполняются два условия:
− Петя не может выиграть за один ход;
− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
Задание 21. Найдите наименьшее значение S, при котором одновременно выполняются два условия:
– у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;
– у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
19) 64
20) 32, 63
21) 62
"""
Последовательность ходов
И П В П В
0 1 2 3 4
"""
def f(s, m, F=all):
if s >= 129: return m % 2 == 0
if m == 0: return 0
h = [f(s+1, m-1), f(s*2, m-1)]
return any(h) if m % 2 != 0 else F(h)
print('19)', [s for s in range(1, 129) if f(s, 2)])
print('20)', [s for s in range(1, 129) if f(s, 3) and not f(s, 1)])
print('20)', [s for s in range(1, 129) if f(s, 4) and not f(s, 2)])
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один или четыре камня, либо увеличить количество камней в куче в четыре раза. У каждого игрока есть неограниченное количество камней, чтобы делать ходы.
Игра завершается в тот момент, когда количество камней в куче становится не менее 78. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 78 или более камня. В начальный момент в куче было S камней; 1 <= S <= 77.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Задание 19. Укажите минимальное значение S, при котором Ваня может выиграть своим первым ходом после любого хода Пети.
Задание 20. Найдите два минимальных значения S, при котором у Пети есть выигрышная стратегия вторым ходом, при этом он не может гарантированно выиграть за один ход.
Задание 21. Найдите минимальное значение S, при котором одновременно выполняются два условия:
- у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;
- у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
19) 19
20) 15, 18
21) 14
"""
Последовательность ходов
И П В П В
0 1 2 3 4
"""
def f(s, m, F=all):
if s >= 78:
return m % 2 == 0
if m == 0:
return 0
h = [f(s+1, m-1), f(s+4, m-1), f(s*4, m-1)]
return any(h) if (m - 1) % 2 == 0 else all(h)
print('19)', [s for s in range(1, 77) if f(s, 2)])
print('20)', [s for s in range(1, 77) if not f(s, 1) and f(s, 3)])
print('21)', [s for s in range(1, 77) if not f(s, 2) and f(s, 4)])
19) [19]
20) [15, 18]
21) [14, 17]
(В. Лашин) Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: убрать из кучи от 1 до 5(включительно) камней или уменьшить количество камней в куче в пять раз (количество камней, полученное при делении, округляется до меньшего) . Например, из кучи в 20 камней за один ход можно получить кучу из 19, 18, 17, 16, 15 или 4 камней. Игра завершается, когда количество камней в куче становится не более 12.
Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 12 или меньше камней. В начальный момент в куче было S камней, S ≥ 20.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Задание 19
Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.
Задание 20
Для игры, описанной в задании 19, найдите минимальное и максимальное значение S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
– Петя не может выиграть за один ход;
– Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
Задание 21
Для игры, описанной в задании 19, найдите минимальное значение S, при котором одновременно выполняются два условия:
– у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;
– у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Ответ
19) 65
20) 66 329
21) 71
"""
Последовательность ходов
И П В П В
0 1 2 3 4
"""
def f(s, m, F=all):
if s <= 12:
return m % 2 == 0
if m == 0:
return 0
h = [f(s - 1, m - 1), f(s - 2, m - 1), f(s - 3, m - 1), f(s - 4, m - 1), f(s - 5, m - 1), f(s // 5, m - 1)]
return any(h) if (m - 1) % 2 == 0 else F(h)
print('19)', [s for s in range(20, 500) if f(s, 2)])
print('20)', [s for s in range(20, 500) if not f(s, 1) and f(s, 3)])
print('21)', [s for s in range(20, 500) if not f(s, 2) and f(s, 4)])
19) [65]
20) [66, 67, 68, 69, 70, 325, 326, 327, 328, 329]
21) [71, 330]
№ 19635 (Уровень: Базовый) (Д. Бахтиев) Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из обеих куч по три камня или уменьшить количество камней в одной из куч в два раза (если количество камней в куче нечётно, остаётся на 1 камень меньше, чем убирается). Например, пусть в одной куче 10, а в другой 15 камней; такую позицию мы будем обозначать (10, 15). За один ход из позиции (10, 15) можно получить любую из трёх позиций: (7, 12), (5, 15), и (10, 7). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 100. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 100 или меньше камней. В начальный момент в первой куче было 48 камней, во второй куче – S камней, S > 52. Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна. Задание 20. Для игры, описанной в задании 19, найдите минимальное и максимальное значения S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания. Задание 21. Для игры, описанной в задании 19, найдите наименьшее значение S, при котором одновременно выполняются два условия: – у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; – у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Показать ответ19) 59 20) 115 229 21) 124 |