№20 — примеры решений

Один эталонный разбор.

Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 125: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 2, m - 1), f(a + 4, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 125) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 125) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 125) if f(s, 4) and not f(s, 2)])
Ответ:31 57
📚 Все задачи с разбором 86
Для игры, описанной в задании 19, найдите два таких значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, m):
    if a + b >= 211: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 1, b, m - 1), f(a, b + 1, m - 1),
         f(a * 2, b, m - 1), f(a, b * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(2, 194) if not f(17, s, 1) and f(17, s, 2)])
print('20)', [s for s in range(2, 194) if not f(17, s, 1) and f(17, s, 3)])
# print('21)', [s for s in range(2, 194) if f(17, s, 4) and not f(17, s, 2)])
Ответ:88 96
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: — Петя не может выиграть за один ход; — Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, m):
    if a + b >= 207: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 1, b, m - 1), f(a, b + 1, m - 1), f(a * 2, b, m - 1), f(a, b * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(2, 189) if not f(17, s, 1) and f(17, s, 2)])
print('20)', [s for s in range(2, 189) if not f(17, s, 1) and f(17, s, 3)])
# print('21)', [s for s in range(2, 189) if f(17, s, 4) and not f(17, s, 2)])
Ответ:86 94
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: — Петя не может выиграть за один ход; — Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a <= 30: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, m - 1), f(a - 5, m - 1), f(a // 4, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(31, 136) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(31, 136) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(31, 136) if f(s, 4) and not f(s, 2)])
Ответ:127 128
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
Петя не может выиграть за один ход; Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 132: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 3, m - 1), f(a + 6, m - 1), f(a * 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 132) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 132) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 132) if f(s, 4) and not f(s, 2)])
Ответ:14 35
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
Петя не может выиграть за один ход; Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 51: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 1, m - 1), f(a + 4, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 51) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 51) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 51) if f(s, 4) and not f(s, 2)])
Ответ:21 24
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
— Петя не может выиграть за один ход; — Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a <= 11: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, m - 1), f(a - 7, m - 1), f(a // 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(12, 63) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(12, 63) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(12, 63) if f(s, 4) and not f(s, 2)])
Ответ:20) [39, 40, 41, 43, 44, 45]
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
Петя не может выиграть за один ход; Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 51: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 1, m - 1), f(a + 4, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 51) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 51) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 51) if f(s, 4) and not f(s, 2)])
Ответ:21 24
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 125: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 2, m - 1), f(a + 4, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 125) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 125) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 125) if f(s, 4) and not f(s, 2)])
Ответ:31 57
Для игры, описанной в задании 19, найдите два таких минимальных значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: – Петя не может выиграть за один ход; – Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 67: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 1, m - 1), f(a + 4, m - 1), f(a * 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 67) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 67) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 67) if f(s, 4) and not f(s, 2)])
Ответ:18 21
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: – Петя не может выиграть за один ход; – Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания
def f(a, m):
    if a >= 132: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 3, m - 1), f(a + 6, m - 1), f(a * 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 132) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 132) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 132) if f(s, 4) and not f(s, 2)])
Ответ:20) [14, 35, 36, 37, 38, 39, 40]
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
- Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a <= 16: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, m - 1), f(a - 8, m - 1), f(a // 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(17, 68) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(17, 68) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(17, 68) if f(s, 4) and not f(s, 2)])
Ответ:54 55
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a <= 27: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, m - 1), f(a - 6, m - 1), f(a // 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(28, 98) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(28, 98) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(28, 98) if f(s, 4) and not f(s, 2)])
Ответ:87 88
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a <= 12: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 1, m - 1), f(a - 6, m - 1), f(a // 5, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(13, 77) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(13, 77) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(13, 77) if f(s, 4) and not f(s, 2)])
Ответ:66 71
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a <= 15: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, m - 1), f(a - 8, m - 1), f(a // 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(16, 67) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(16, 67) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(16, 67) if f(s, 4) and not f(s, 2)])
Ответ:51 52
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a <= 19: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 2, m - 1), f(a - 5, m - 1), f(a // 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(20, 73) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(20, 73) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(20, 73) if f(s, 4) and not f(s, 2)])
Ответ:62 63
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 2 камня; - добавить в кучу 5 камней; - увеличить количество камней в куче в 3 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 22, 25 или 60 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 97. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 97 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 96. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19100, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 97: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 2, m - 1), f(a + 5, m - 1), f(a * 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 97) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 97) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 97) if f(s, 4) and not f(s, 2)])
Ответ:26 27
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 3 камня; - добавить в кучу 7 камней; - увеличить количество камней в куче в 2 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 23, 27 или 40 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 89. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 89 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 88. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19101, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 89: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 3, m - 1), f(a + 7, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 89) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 89) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 89) if f(s, 4) and not f(s, 2)])
Ответ:21 22
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 4 камня; - добавить в кучу 6 камней; - увеличить количество камней в куче в 3 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 24, 26 или 60 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 100. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 100 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 99. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19102, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 100: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 4, m - 1), f(a + 6, m - 1), f(a * 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 100) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 100) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 100) if f(s, 4) and not f(s, 2)])
Ответ:10 11
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 2 камня; - добавить в кучу 9 камней; - увеличить количество камней в куче в 2 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 22, 29 или 40 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 71. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 71 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 70. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19103, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 71: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 2, m - 1), f(a + 9, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 71) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 71) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 71) if f(s, 4) and not f(s, 2)])
Ответ:17 25
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 5 камня; - добавить в кучу 8 камней; - увеличить количество камней в куче в 2 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 25, 28 или 40 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 121. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 121 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 120. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19104, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 121: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 5, m - 1), f(a + 8, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 121) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 121) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 121) if f(s, 4) and not f(s, 2)])
Ответ:28 29
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 3 камня; - добавить в кучу 4 камней; - увеличить количество камней в куче в 4 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 23, 24 или 80 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 140. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 140 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 139. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19105, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 140: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 3, m - 1), f(a + 4, m - 1), f(a * 4, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 140) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 140) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 140) if f(s, 4) and not f(s, 2)])
Ответ:8 28
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 6 камня; - добавить в кучу 11 камней; - увеличить количество камней в куче в 2 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 26, 31 или 40 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 90. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 90 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 89. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19106, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 90: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 6, m - 1), f(a + 11, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 90) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 90) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 90) if f(s, 4) and not f(s, 2)])
Ответ:20 21
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 1 камня; - добавить в кучу 8 камней; - увеличить количество камней в куче в 3 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 21, 28 или 60 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 82. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 82 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 81. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19107, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 82: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 1, m - 1), f(a + 8, m - 1), f(a * 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 82) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 82) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 82) if f(s, 4) and not f(s, 2)])
Ответ:9 19
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 4 камня; - добавить в кучу 9 камней; - увеличить количество камней в куче в 2 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 24, 29 или 40 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 96. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 96 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 95. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19108, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 96: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 4, m - 1), f(a + 9, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 96) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 96) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 96) if f(s, 4) and not f(s, 2)])
Ответ:22 23
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 7 камня; - добавить в кучу 10 камней; - увеличить количество камней в куче в 2 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 27, 30 или 40 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 130. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 130 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 129. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19109, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 130: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 7, m - 1), f(a + 10, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 130) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 130) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 130) if f(s, 4) and not f(s, 2)])
Ответ:29 30
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 2 или 3 камня либо увеличить количество камней в куче в 3 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 313. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 313 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 312. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19110, найдите наименьшее и наибольшее значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 313: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 2, m - 1), f(a + 3, m - 1), f(a * 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 313) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 313) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 313) if f(s, 4) and not f(s, 2)])
Ответ:100
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 1 или 3 камня либо увеличить количество камней в куче в 2 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 172. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 172 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 171. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19111, найдите наименьшее и наибольшее значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 172: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 1, m - 1), f(a + 3, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 172) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 172) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 172) if f(s, 4) and not f(s, 2)])
Ответ:82
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч 3 камня или уменьшить количество камней в выбранной куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 36. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 36 или меньше камней. В начальный момент в первой куче было 20 камней, во второй куче — S камней, 16 < S ≤ 150. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19112, найдите наименьшее и наибольшее значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, m):
    if a + b <= 36: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f((a + 1) // 2, b, m - 1), f(a, (b + 1) // 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(17, 151) if not f(20, s, 1) and f(20, s, 2)])
print('20)', [s for s in range(17, 151) if not f(20, s, 1) and f(20, s, 3)])
# print('21)', [s for s in range(17, 151) if f(20, s, 4) and not f(20, s, 2)])
Ответ:36
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 2 или 4 камня либо увеличить количество камней в куче в 2 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 125. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 125 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 124. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19113, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 125: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 2, m - 1), f(a + 4, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 125) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 125) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 125) if f(s, 4) and not f(s, 2)])
Ответ:31 57
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 4 или 7 камня либо увеличить количество камней в куче в 3 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 210. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 210 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 209. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19114, найдите два наибольших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 210: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 4, m - 1), f(a + 7, m - 1), f(a * 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 210) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 210) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 210) if f(s, 4) and not f(s, 2)])
Ответ:65 64
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 5 или 6 камня либо увеличить количество камней в куче в 2 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 190. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 190 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 189. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19115, найдите наименьшее и наибольшее значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 190: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 5, m - 1), f(a + 6, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 190) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 190) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 190) if f(s, 4) and not f(s, 2)])
Ответ:45
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 3 или 8 камня либо увеличить количество камней в куче в 4 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 260. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 260 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 259. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19116, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 260: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 3, m - 1), f(a + 8, m - 1), f(a * 4, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 260) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 260) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 260) if f(s, 4) and not f(s, 2)])
Ответ:16 54
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 1 или 5 камня либо увеличить количество камней в куче в 3 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 155. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 155 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 154. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19117, найдите наименьшее и наибольшее значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 155: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 1, m - 1), f(a + 5, m - 1), f(a * 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 155) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 155) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 155) if f(s, 4) and not f(s, 2)])
Ответ:17
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 6 или 9 камня либо увеличить количество камней в куче в 2 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 230. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 230 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 229. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19118, найдите два наибольших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 230: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 6, m - 1), f(a + 9, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 230) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 230) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 230) if f(s, 4) and not f(s, 2)])
Ответ:108 107
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 2 или 10 камня либо увеличить количество камней в куче в 2 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 180. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 180 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 179. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19119, найдите наименьшее и наибольшее значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 180: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 2, m - 1), f(a + 10, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 180) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 180) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 180) if f(s, 4) and not f(s, 2)])
Ответ:44
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 4 или 5 камня либо увеличить количество камней в куче в 4 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 300. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 300 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 299. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19120, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 300: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 4, m - 1), f(a + 5, m - 1), f(a * 4, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 300) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 300) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 300) if f(s, 4) and not f(s, 2)])
Ответ:18 66
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 7 или 11 камня либо увеличить количество камней в куче в 2 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 240. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 240 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 239. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19121, найдите наименьшее и наибольшее значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 240: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 7, m - 1), f(a + 11, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 240) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 240) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 240) if f(s, 4) and not f(s, 2)])
Ответ:57
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 2 или 6 камня либо увеличить количество камней в куче в 5 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 350. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 350 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 349. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19122, найдите два наибольших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 350: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 2, m - 1), f(a + 6, m - 1), f(a * 5, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 350) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 350) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 350) if f(s, 4) and not f(s, 2)])
Ответ:67 66
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 3 или 9 камня либо увеличить количество камней в куче в 2 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 210. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 210 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 209. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19123, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 210: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 3, m - 1), f(a + 9, m - 1), f(a * 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 210) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 210) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 210) if f(s, 4) and not f(s, 2)])
Ответ:51 52
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 1 или 4 камня либо увеличить количество камней в куче в 3 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 160. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 160 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 159. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19124, найдите наименьшее и наибольшее значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a >= 160: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 1, m - 1), f(a + 4, m - 1), f(a * 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 160) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(1, 160) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(1, 160) if f(s, 4) and not f(s, 2)])
Ответ:49
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч 4 камня или уменьшить количество камней в выбранной куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 48. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 48 или меньше камней. В начальный момент в первой куче было 24 камней, во второй куче — S камней, 18 < S ≤ 170. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19125, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, m):
    if a + b <= 48: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 4, b, m - 1), f(a, b - 4, m - 1), f((a + 1) // 2, b, m - 1), f(a, (b + 1) // 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(19, 171) if not f(24, s, 1) and f(24, s, 2)])
print('20)', [s for s in range(19, 171) if not f(24, s, 1) and f(24, s, 3)])
# print('21)', [s for s in range(19, 171) if f(24, s, 4) and not f(24, s, 2)])
Ответ:53 54
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч 2 камня или уменьшить количество камней в выбранной куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 60. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 60 или меньше камней. В начальный момент в первой куче было 30 камней, во второй куче — S камней, 20 < S ≤ 180. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19126, найдите наименьшее и наибольшее значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, m):
    if a + b <= 60: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 2, b, m - 1), f(a, b - 2, m - 1), f((a + 1) // 2, b, m - 1), f(a, (b + 1) // 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(21, 181) if not f(30, s, 1) and f(30, s, 2)])
print('20)', [s for s in range(21, 181) if not f(30, s, 1) and f(30, s, 3)])
# print('21)', [s for s in range(21, 181) if f(30, s, 4) and not f(30, s, 2)])
Ответ:63
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 72. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 72 или меньше камней. В начальный момент в первой куче было 50 камней, во второй куче – S камней, S > 22. Для игры, описанной в задании 19127, найдите минимальное и максимальное значения S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, m):
    if a + b <= 72: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(23, 1000) if not f(50, s, 1) and f(50, s, 2)])
print('20)', [s for s in range(23, 1000) if not f(50, s, 1) and f(50, s, 3)])
# print('21)', [s for s in range(23, 1000) if f(50, s, 4) and not f(50, s, 2)])
Ответ:51 100
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 22. Для игры, описанной в задании 19128, найдите два наименьших значения S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(23, 1000) if not f(44, s, 1) and f(44, s, 2)])
print('20)', [s for s in range(23, 1000) if not f(44, s, 1) and f(44, s, 3)])
# print('21)', [s for s in range(23, 1000) if f(44, s, 4) and not f(44, s, 2)])
Ответ:48 49
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 23. Для игры, описанной в задании 19129, найдите два наибольших значения S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(24, 1000) if not f(44, s, 1) and f(44, s, 2)])
print('20)', [s for s in range(24, 1000) if not f(44, s, 1) and f(44, s, 3)])
# print('21)', [s for s in range(24, 1000) if f(44, s, 4) and not f(44, s, 2)])
Ответ:20) [48, 49, 50, 51, 52, 53, 89, 90, 91, 92, 93, 94]
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 24. Для игры, описанной в задании 19130, найдите сумму таких значений S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(25, 1000) if not f(44, s, 1) and f(44, s, 2)])
print('20)', [s for s in range(25, 1000) if not f(44, s, 1) and f(44, s, 3)])
# print('21)', [s for s in range(25, 1000) if f(44, s, 4) and not f(44, s, 2)])
Ответ:852
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 25. Для игры, описанной в задании 19131, найдите наименьшее значение S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(26, 1000) if not f(44, s, 1) and f(44, s, 2)])
print('20)', [s for s in range(26, 1000) if not f(44, s, 1) and f(44, s, 3)])
# print('21)', [s for s in range(26, 1000) if f(44, s, 4) and not f(44, s, 2)])
Ответ:48
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 26. Для игры, описанной в задании 19132, найдите наибольшее значение S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(27, 1000) if not f(44, s, 1) and f(44, s, 2)])
print('20)', [s for s in range(27, 1000) if not f(44, s, 1) and f(44, s, 3)])
# print('21)', [s for s in range(27, 1000) if f(44, s, 4) and not f(44, s, 2)])
Ответ:94
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 27. Для игры, описанной в задании 19133, найдите количество таких значений S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(28, 1000) if not f(44, s, 1) and f(44, s, 2)])
print('20)', [s for s in range(28, 1000) if not f(44, s, 1) and f(44, s, 3)])
# print('21)', [s for s in range(28, 1000) if f(44, s, 4) and not f(44, s, 2)])
Ответ:12
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 28. Для игры, описанной в задании 19134, найдите минимальное и максимальное значения S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(29, 1000) if not f(44, s, 1) and f(44, s, 2)])
print('20)', [s for s in range(29, 1000) if not f(44, s, 1) and f(44, s, 3)])
# print('21)', [s for s in range(29, 1000) if f(44, s, 4) and not f(44, s, 2)])
Ответ:48 94
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 29. Для игры, описанной в задании 19135, найдите два наименьших значения S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(30, 1000) if not f(44, s, 1) and f(44, s, 2)])
print('20)', [s for s in range(30, 1000) if not f(44, s, 1) and f(44, s, 3)])
# print('21)', [s for s in range(30, 1000) if f(44, s, 4) and not f(44, s, 2)])
Ответ:48 49
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 30. Для игры, описанной в задании 19136, найдите два наибольших значения S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(31, 1000) if not f(44, s, 1) and f(44, s, 2)])
print('20)', [s for s in range(31, 1000) if not f(44, s, 1) and f(44, s, 3)])
# print('21)', [s for s in range(31, 1000) if f(44, s, 4) and not f(44, s, 2)])
Ответ:20) [48, 49, 50, 51, 52, 53, 89, 90, 91, 92, 93, 94]
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 31. Для игры, описанной в задании 19137, найдите сумму таких значений S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(32, 1000) if not f(44, s, 1) and f(44, s, 2)])
print('20)', [s for s in range(32, 1000) if not f(44, s, 1) and f(44, s, 3)])
# print('21)', [s for s in range(32, 1000) if f(44, s, 4) and not f(44, s, 2)])
Ответ:852
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 32. Для игры, описанной в задании 19138, найдите наименьшее значение S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(33, 1000) if not f(44, s, 1) and f(44, s, 2)])
print('20)', [s for s in range(33, 1000) if not f(44, s, 1) and f(44, s, 3)])
# print('21)', [s for s in range(33, 1000) if f(44, s, 4) and not f(44, s, 2)])
Ответ:48
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 33. Для игры, описанной в задании 19139, найдите наибольшее значение S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(34, 1000) if not f(44, s, 1) and f(44, s, 2)])
print('20)', [s for s in range(34, 1000) if not f(44, s, 1) and f(44, s, 3)])
# print('21)', [s for s in range(34, 1000) if f(44, s, 4) and not f(44, s, 2)])
Ответ:94
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 34. Для игры, описанной в задании 19140, найдите количество таких значений S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(35, 1000) if not f(44, s, 1) and f(44, s, 2)])
print('20)', [s for s in range(35, 1000) if not f(44, s, 1) and f(44, s, 3)])
# print('21)', [s for s in range(35, 1000) if f(44, s, 4) and not f(44, s, 2)])
Ответ:12
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 35. Для игры, описанной в задании 19141, найдите минимальное и максимальное значения S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(36, 1000) if not f(44, s, 1) and f(44, s, 2)])
print('20)', [s for s in range(36, 1000) if not f(44, s, 1) and f(44, s, 3)])
# print('21)', [s for s in range(36, 1000) if f(44, s, 4) and not f(44, s, 2)])
Ответ:48 94
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 45 камней, во второй куче – S камней, S > 21. Для игры, описанной в задании 19142, найдите два наименьших значения S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(22, 1000) if not f(45, s, 1) and f(45, s, 2)])
print('20)', [s for s in range(22, 1000) if not f(45, s, 1) and f(45, s, 3)])
# print('21)', [s for s in range(22, 1000) if f(45, s, 4) and not f(45, s, 2)])
Ответ:47 48
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 45 камней, во второй куче – S камней, S > 22. Для игры, описанной в задании 19143, найдите два наибольших значения S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(23, 1000) if not f(45, s, 1) and f(45, s, 2)])
print('20)', [s for s in range(23, 1000) if not f(45, s, 1) and f(45, s, 3)])
# print('21)', [s for s in range(23, 1000) if f(45, s, 4) and not f(45, s, 2)])
Ответ:20) [47, 48, 49, 50, 51, 87, 88, 89, 90, 91, 92]
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 45 камней, во второй куче – S камней, S > 23. Для игры, описанной в задании 19144, найдите сумму таких значений S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(24, 1000) if not f(45, s, 1) and f(45, s, 2)])
print('20)', [s for s in range(24, 1000) if not f(45, s, 1) and f(45, s, 3)])
# print('21)', [s for s in range(24, 1000) if f(45, s, 4) and not f(45, s, 2)])
Ответ:782
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 45 камней, во второй куче – S камней, S > 24. Для игры, описанной в задании 19145, найдите наименьшее значение S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(25, 1000) if not f(45, s, 1) and f(45, s, 2)])
print('20)', [s for s in range(25, 1000) if not f(45, s, 1) and f(45, s, 3)])
# print('21)', [s for s in range(25, 1000) if f(45, s, 4) and not f(45, s, 2)])
Ответ:47
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 45 камней, во второй куче – S камней, S > 25. Для игры, описанной в задании 19146, найдите наибольшее значение S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, m):
    if a + b <= 66: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 3, b, m - 1), f(a, b - 3, m - 1), f(a // 2 + a % 2, b , m - 1), f(a, b // 2 + b % 2, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(26, 1000) if not f(45, s, 1) and f(45, s, 2)])
print('20)', [s for s in range(26, 1000) if not f(45, s, 1) and f(45, s, 3)])
# print('21)', [s for s in range(26, 1000) if f(45, s, 4) and not f(45, s, 2)])
Ответ:92
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может выполнить ровно одно из действий: 1) уменьшить количество камней в любой одной куче на 2; 2) уменьшить количество камней в любой одной куче на 5; 3) уменьшить количество камней в любой одной куче в два раза (если количество камней нечётно, остаётся на 1 камень больше, чем убирается); 4) уменьшить количество камней в любой одной куче на остаток от деления на 3 (если остаток равен 0, уменьшают на 3); 5) уменьшить выбранную кучу на max(1, остаток от деления количества камней в этой куче на 4). Игра завершается в тот момент, когда суммарное количество камней в трёх кучах становится не более 52. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 52 или меньше камней. В начальный момент в первой куче было 24 камня, во второй куче — 24 камня, в третьей куче — S камней, где S > 12 и S ≤ 140. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19147, найдите два наибольших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, c, m):
    if a + b + c <= 52: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for nx in [x - 2, x - 5, (x + 1) // 2, x - (x % 3 if x % 3 else 3)]:
            if nx >= 1:
                t = [a, b, c]
                t[i] = nx
                h.append(f(t[0], t[1], t[2], m - 1))
    for i, x in enumerate((a, b, c)):
        nx = x - max(1, x % 4)
        if nx >= 1:
            t = [a, b, c]
            t[i] = nx
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(13, 141) if not f(24, 24, s, 1) and f(24, 24, s, 2)])
print('20)', [s for s in range(13, 141) if not f(24, 24, s, 1) and f(24, 24, s, 3)])
# print('21)', [s for s in range(13, 141) if f(24, 24, s, 4) and not f(24, 24, s, 2)])
Ответ:34 33
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может выполнить ровно одно из действий: 1) уменьшить количество камней в любой одной куче на 2; 2) уменьшить количество камней в любой одной куче на 5; 3) уменьшить количество камней в любой одной куче в два раза (если количество камней нечётно, остаётся на 1 камень больше, чем убирается); 4) уменьшить количество камней в любой одной куче на остаток от деления на 3 (если остаток равен 0, уменьшают на 3); 5) уменьшить выбранную кучу на остаток от деления количества камней в этой куче на 5 (если остаток равен 0, уменьшают на 5). Игра завершается в тот момент, когда суммарное количество камней в трёх кучах становится не более 52. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 52 или меньше камней. В начальный момент в первой куче было 24 камня, во второй куче — 24 камня, в третьей куче — S камней, где S > 12 и S ≤ 140. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19148, найдите наименьшее и наибольшее значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, c, m):
    if a + b + c <= 52: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for nx in [x - 2, x - 5, (x + 1) // 2, x - (x % 3 if x % 3 else 3)]:
            if nx >= 1:
                t = [a, b, c]
                t[i] = nx
                h.append(f(t[0], t[1], t[2], m - 1))
    for i, x in enumerate((a, b, c)):
        d = x % 5 if x % 5 else 5
        nx = x - d
        if nx >= 1:
            t = [a, b, c]
            t[i] = nx
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(13, 141) if not f(24, 24, s, 1) and f(24, 24, s, 2)])
print('20)', [s for s in range(13, 141) if not f(24, 24, s, 1) and f(24, 24, s, 3)])
# print('21)', [s for s in range(13, 141) if f(24, 24, s, 4) and not f(24, 24, s, 2)])
Ответ:19
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может выполнить ровно одно из действий: 1) уменьшить количество камней в любой одной куче на 2; 2) уменьшить количество камней в любой одной куче на 5; 3) уменьшить количество камней в любой одной куче в два раза (если количество камней нечётно, остаётся на 1 камень больше, чем убирается); 4) уменьшить количество камней в любой одной куче на остаток от деления на 3 (если остаток равен 0, уменьшают на 3); 5) уменьшить выбранную кучу на треть её текущего значения, округляя количество убираемых камней вниз. Игра завершается в тот момент, когда суммарное количество камней в трёх кучах становится не более 52. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 52 или меньше камней. В начальный момент в первой куче было 24 камня, во второй куче — 24 камня, в третьей куче — S камней, где S > 12 и S ≤ 140. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19149, найдите количество таких значений S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, c, m):
    if a + b + c <= 52: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for nx in [x - 2, x - 5, (x + 1) // 2, x - (x % 3 if x % 3 else 3)]:
            if nx >= 1:
                t = [a, b, c]
                t[i] = nx
                h.append(f(t[0], t[1], t[2], m - 1))
    for i, x in enumerate((a, b, c)):
        nx = x - (x // 3)
        if nx >= 1:
            t = [a, b, c]
            t[i] = nx
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(13, 141) if not f(24, 24, s, 1) and f(24, 24, s, 2)])
print('20)', [s for s in range(13, 141) if not f(24, 24, s, 1) and f(24, 24, s, 3)])
# print('21)', [s for s in range(13, 141) if f(24, 24, s, 4) and not f(24, 24, s, 2)])
Ответ:12
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может выполнить ровно одно из действий: 1) уменьшить количество камней в любой одной куче на 2; 2) уменьшить количество камней в любой одной куче на 5; 3) уменьшить количество камней в любой одной куче в два раза (если количество камней нечётно, остаётся на 1 камень больше, чем убирается); 4) уменьшить количество камней в любой одной куче на остаток от деления на 3 (если остаток равен 0, уменьшают на 3); 5) выбрать две разные кучи X и Y и уменьшить кучу X на остаток от деления количества камней в куче Y на 4 (если остаток равен 0, уменьшают на 2). Игра завершается в тот момент, когда суммарное количество камней в трёх кучах становится не более 52. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 52 или меньше камней. В начальный момент в первой куче было 24 камня, во второй куче — 24 камня, в третьей куче — S камней, где S > 12 и S ≤ 140. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19150, найдите сумму таких значений S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, c, m):
    if a + b + c <= 52: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for nx in [x - 2, x - 5, (x + 1) // 2, x - (x % 3 if x % 3 else 3)]:
            if nx >= 1:
                t = [a, b, c]
                t[i] = nx
                h.append(f(t[0], t[1], t[2], m - 1))
    p = [a, b, c]
    for i in range(3):
        for j in range(3):
            if i == j:
                continue
            q = p[j] % 4 if p[j] % 4 else 2
            nx = p[i] - q
            if nx >= 1:
                t = [a, b, c]
                t[i] = nx
                h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(13, 141) if not f(24, 24, s, 1) and f(24, 24, s, 2)])
print('20)', [s for s in range(13, 141) if not f(24, 24, s, 1) and f(24, 24, s, 3)])
# print('21)', [s for s in range(13, 141) if f(24, 24, s, 4) and not f(24, 24, s, 2)])
Ответ:243
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может выполнить ровно одно из действий: 1) уменьшить количество камней в любой одной куче на 2; 2) уменьшить количество камней в любой одной куче на 5; 3) уменьшить количество камней в любой одной куче в два раза (если количество камней нечётно, остаётся на 1 камень больше, чем убирается); 4) уменьшить количество камней в любой одной куче на остаток от деления на 3 (если остаток равен 0, уменьшают на 3); 5) уменьшить выбранную кучу на значение d, где d = (сумма цифр количества камней в этой куче) mod 5; если d = 0, уменьшают на 2. Игра завершается в тот момент, когда суммарное количество камней в трёх кучах становится не более 52. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 52 или меньше камней. В начальный момент в первой куче было 24 камня, во второй куче — 24 камня, в третьей куче — S камней, где S > 12 и S ≤ 140. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19151, найдите сумму таких значений S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, c, m):
    if a + b + c <= 52: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for nx in [x - 2, x - 5, (x + 1) // 2, x - (x % 3 if x % 3 else 3)]:
            if nx >= 1:
                t = [a, b, c]
                t[i] = nx
                h.append(f(t[0], t[1], t[2], m - 1))
    def sod(x):
        return sum(map(int, str(x)))
    for i, x in enumerate((a, b, c)):
        d = sod(x) % 5
        d = d if d else 2
        nx = x - d
        if nx >= 1:
            t = [a, b, c]
            t[i] = nx
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(13, 141) if not f(24, 24, s, 1) and f(24, 24, s, 2)])
print('20)', [s for s in range(13, 141) if not f(24, 24, s, 1) and f(24, 24, s, 3)])
# print('21)', [s for s in range(13, 141) if f(24, 24, s, 4) and not f(24, 24, s, 2)])
Ответ:108
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч 3, 13 или 23 камня. Игра завершается в тот момент, когда в сумме в кучах будет не менее 73 камней. Победителем считается игрок, сделавший последний ход. В начальный момент в кучах было (2, S, 2S) камней, 8 <= S <= 23. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19152, найдите наименьшее и наибольшее значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, c, m):
    if a + b + c >= 73: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for d in (3, 13, 23):
            t = [a, b, c]
            t[i] = x + d
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(8, 24) if not f(2, s, 2*s, 1) and f(2, s, 2*s, 2)])
print('20)', [s for s in range(8, 24) if not f(2, s, 2*s, 1) and f(2, s, 2*s, 3)])
# print('21)', [s for s in range(8, 24) if f(2, s, 2*s, 4) and not f(2, s, 2*s, 2)])
Ответ:8
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч 3, 13 или 23 камня. Игра завершается в тот момент, когда в сумме в кучах будет не менее 73 камней. Победителем считается игрок, сделавший последний ход. В начальный момент в кучах было (2, S, 2S) камней, 9 <= S <= 23. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19153, найдите количество значений S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, c, m):
    if a + b + c >= 73: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for d in (3, 13, 23):
            t = [a, b, c]
            t[i] = x + d
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(9, 24) if not f(2, s, 2*s, 1) and f(2, s, 2*s, 2)])
print('20)', [s for s in range(9, 24) if not f(2, s, 2*s, 1) and f(2, s, 2*s, 3)])
# print('21)', [s for s in range(9, 24) if f(2, s, 2*s, 4) and not f(2, s, 2*s, 2)])
Ответ:2
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч 3, 13 или 23 камня. Игра завершается в тот момент, когда в сумме в кучах будет не менее 73 камней. Победителем считается игрок, сделавший последний ход. В начальный момент в кучах было (2, S, 2S) камней, 10 <= S <= 23. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19154, найдите наименьшее и наибольшее значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, c, m):
    if a + b + c >= 73: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for d in (3, 13, 23):
            t = [a, b, c]
            t[i] = x + d
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(10, 24) if not f(2, s, 2*s, 1) and f(2, s, 2*s, 2)])
print('20)', [s for s in range(10, 24) if not f(2, s, 2*s, 1) and f(2, s, 2*s, 3)])
# print('21)', [s for s in range(10, 24) if f(2, s, 2*s, 4) and not f(2, s, 2*s, 2)])
Ответ:11
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч 3, 13 или 23 камня. Игра завершается в тот момент, когда в сумме в кучах будет не менее 73 камней. Победителем считается игрок, сделавший последний ход. В начальный момент в кучах было (2, S, 2S) камней, 11 <= S <= 23. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19155, найдите сумму значений S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, c, m):
    if a + b + c >= 73: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for d in (3, 13, 23):
            t = [a, b, c]
            t[i] = x + d
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(11, 24) if not f(2, s, 2*s, 1) and f(2, s, 2*s, 2)])
print('20)', [s for s in range(11, 24) if not f(2, s, 2*s, 1) and f(2, s, 2*s, 3)])
# print('21)', [s for s in range(11, 24) if f(2, s, 2*s, 4) and not f(2, s, 2*s, 2)])
Ответ:25
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч 3, 13 или 23 камня. Игра завершается в тот момент, когда в сумме в кучах будет не менее 73 камней. Победителем считается игрок, сделавший последний ход. В начальный момент в кучах было (2, S, 2S) камней, 12 <= S <= 23. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19156, найдите максимальное значение S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
def f(a, b, c, m):
    if a + b + c >= 73: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for d in (3, 13, 23):
            t = [a, b, c]
            t[i] = x + d
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(12, 24) if not f(2, s, 2*s, 1) and f(2, s, 2*s, 2)])
print('20)', [s for s in range(12, 24) if not f(2, s, 2*s, 1) and f(2, s, 2*s, 3)])
# print('21)', [s for s in range(12, 24) if f(2, s, 2*s, 4) and not f(2, s, 2*s, 2)])
Ответ:14
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 1 камень, добавить 3 камня или увеличить количество камней в этой куче в 2 раза. Игра завершается в тот момент, когда суммарное количество камней в трёх кучах становится не менее 42. Побеждает игрок, сделавший ход, после которого сумма стала не менее 42. В начальный момент в кучах было (1, S, 1S + 0) камней, где 5 <= S <= 22. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19157, найдите минимальное и максимальное значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, c, m):
    if a + b + c >= 42: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for nx in (x + 1, x + 3, x * 2):
            t = [a, b, c]
            t[i] = nx
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(5, 23) if not f(1, s, 1*s + 0, 1) and f(1, s, 1*s + 0, 2)])
print('20)', [s for s in range(5, 23) if not f(1, s, 1*s + 0, 1) and f(1, s, 1*s + 0, 3)])
# print('21)', [s for s in range(5, 23) if f(1, s, 1*s + 0, 4) and not f(1, s, 1*s + 0, 2)])
Ответ:8
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 2 камень, добавить 3 камня или увеличить количество камней в этой куче в 2 раза. Игра завершается в тот момент, когда суммарное количество камней в трёх кучах становится не менее 42. Побеждает игрок, сделавший ход, после которого сумма стала не менее 42. В начальный момент в кучах было (3, S, 1S + 0) камней, где 3 <= S <= 20. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19158, найдите минимальное и максимальное значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, c, m):
    if a + b + c >= 42: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for nx in (x + 2, x + 3, x * 2):
            t = [a, b, c]
            t[i] = nx
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(3, 21) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 2)])
print('20)', [s for s in range(3, 21) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 3)])
# print('21)', [s for s in range(3, 21) if f(3, s, 1*s + 0, 4) and not f(3, s, 1*s + 0, 2)])
Ответ:11
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 2 камень, добавить 3 камня или увеличить количество камней в этой куче в 2 раза. Игра завершается в тот момент, когда суммарное количество камней в трёх кучах становится не менее 42. Побеждает игрок, сделавший ход, после которого сумма стала не менее 42. В начальный момент в кучах было (3, S, 1S + 0) камней, где 4 <= S <= 20. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19159, найдите минимальное и максимальное значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, c, m):
    if a + b + c >= 42: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for nx in (x + 2, x + 3, x * 2):
            t = [a, b, c]
            t[i] = nx
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(4, 21) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 2)])
print('20)', [s for s in range(4, 21) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 3)])
# print('21)', [s for s in range(4, 21) if f(3, s, 1*s + 0, 4) and not f(3, s, 1*s + 0, 2)])
Ответ:11
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 2 камень, добавить 3 камня или увеличить количество камней в этой куче в 2 раза. Игра завершается в тот момент, когда суммарное количество камней в трёх кучах становится не менее 42. Побеждает игрок, сделавший ход, после которого сумма стала не менее 42. В начальный момент в кучах было (3, S, 1S + 0) камней, где 5 <= S <= 22. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19160, найдите минимальное и максимальное значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, c, m):
    if a + b + c >= 42: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for nx in (x + 2, x + 3, x * 2):
            t = [a, b, c]
            t[i] = nx
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(5, 23) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 2)])
print('20)', [s for s in range(5, 23) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 3)])
# print('21)', [s for s in range(5, 23) if f(3, s, 1*s + 0, 4) and not f(3, s, 1*s + 0, 2)])
Ответ:11
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 2 камень, добавить 3 камня или увеличить количество камней в этой куче в 2 раза. Игра завершается в тот момент, когда суммарное количество камней в трёх кучах становится не менее 52. Побеждает игрок, сделавший ход, после которого сумма стала не менее 52. В начальный момент в кучах было (3, S, 1S + 0) камней, где 1 <= S <= 16. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19161, найдите минимальное и максимальное значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, c, m):
    if a + b + c >= 52: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for nx in (x + 2, x + 3, x * 2):
            t = [a, b, c]
            t[i] = nx
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 17) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 2)])
print('20)', [s for s in range(1, 17) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 3)])
# print('21)', [s for s in range(1, 17) if f(3, s, 1*s + 0, 4) and not f(3, s, 1*s + 0, 2)])
Ответ:14
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 2 камень, добавить 3 камня или увеличить количество камней в этой куче в 2 раза. Игра завершается в тот момент, когда суммарное количество камней в трёх кучах становится не менее 52. Побеждает игрок, сделавший ход, после которого сумма стала не менее 52. В начальный момент в кучах было (3, S, 1S + 0) камней, где 1 <= S <= 18. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19162, найдите минимальное и максимальное значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, c, m):
    if a + b + c >= 52: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for nx in (x + 2, x + 3, x * 2):
            t = [a, b, c]
            t[i] = nx
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(1, 19) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 2)])
print('20)', [s for s in range(1, 19) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 3)])
# print('21)', [s for s in range(1, 19) if f(3, s, 1*s + 0, 4) and not f(3, s, 1*s + 0, 2)])
Ответ:14
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 2 камень, добавить 3 камня или увеличить количество камней в этой куче в 2 раза. Игра завершается в тот момент, когда суммарное количество камней в трёх кучах становится не менее 52. Побеждает игрок, сделавший ход, после которого сумма стала не менее 52. В начальный момент в кучах было (3, S, 1S + 0) камней, где 2 <= S <= 18. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19163, найдите минимальное и максимальное значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, c, m):
    if a + b + c >= 52: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for nx in (x + 2, x + 3, x * 2):
            t = [a, b, c]
            t[i] = nx
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(2, 19) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 2)])
print('20)', [s for s in range(2, 19) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 3)])
# print('21)', [s for s in range(2, 19) if f(3, s, 1*s + 0, 4) and not f(3, s, 1*s + 0, 2)])
Ответ:14
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 2 камень, добавить 3 камня или увеличить количество камней в этой куче в 2 раза. Игра завершается в тот момент, когда суммарное количество камней в трёх кучах становится не менее 52. Побеждает игрок, сделавший ход, после которого сумма стала не менее 52. В начальный момент в кучах было (3, S, 1S + 0) камней, где 3 <= S <= 20. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19164, найдите минимальное и максимальное значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, c, m):
    if a + b + c >= 52: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for nx in (x + 2, x + 3, x * 2):
            t = [a, b, c]
            t[i] = nx
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(3, 21) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 2)])
print('20)', [s for s in range(3, 21) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 3)])
# print('21)', [s for s in range(3, 21) if f(3, s, 1*s + 0, 4) and not f(3, s, 1*s + 0, 2)])
Ответ:14
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 2 камень, добавить 3 камня или увеличить количество камней в этой куче в 2 раза. Игра завершается в тот момент, когда суммарное количество камней в трёх кучах становится не менее 52. Побеждает игрок, сделавший ход, после которого сумма стала не менее 52. В начальный момент в кучах было (3, S, 1S + 0) камней, где 4 <= S <= 20. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19165, найдите минимальное и максимальное значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, c, m):
    if a + b + c >= 52: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for nx in (x + 2, x + 3, x * 2):
            t = [a, b, c]
            t[i] = nx
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(4, 21) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 2)])
print('20)', [s for s in range(4, 21) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 3)])
# print('21)', [s for s in range(4, 21) if f(3, s, 1*s + 0, 4) and not f(3, s, 1*s + 0, 2)])
Ответ:14
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 2 камень, добавить 3 камня или увеличить количество камней в этой куче в 2 раза. Игра завершается в тот момент, когда суммарное количество камней в трёх кучах становится не менее 52. Побеждает игрок, сделавший ход, после которого сумма стала не менее 52. В начальный момент в кучах было (3, S, 1S + 0) камней, где 5 <= S <= 22. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19166, найдите минимальное и максимальное значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, c, m):
    if a + b + c >= 52: return m % 2 == 0
    if m == 0: return 0
    h = []
    for i, x in enumerate((a, b, c)):
        for nx in (x + 2, x + 3, x * 2):
            t = [a, b, c]
            t[i] = nx
            h.append(f(t[0], t[1], t[2], m - 1))
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(5, 23) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 2)])
print('20)', [s for s in range(5, 23) if not f(3, s, 1*s + 0, 1) and f(3, s, 1*s + 0, 3)])
# print('21)', [s for s in range(5, 23) if f(3, s, 1*s + 0, 4) and not f(3, s, 1*s + 0, 2)])
Ответ:14
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: — Петя не может выиграть за один ход; — Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, b, m):
    if a + b >= 65: return m % 2 == 0
    if m == 0: return 0
    h = [f(a + 1, b, m - 1), f(a, b + 1, m - 1),
         f(a * 3, b, m - 1), f(a, b * 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
def g(a, b, m):
    if a + b >= 65: return m % 2 == 0
    if m == 0: return 0
    h = [g(a + 1, b, m - 1), g(a, b + 1, m - 1),
         g(a * 3, b, m - 1), g(a, b * 3, m - 1)]
    return any(h) if m % 2 != 0 else any(h)  # 19: после неудачного хода Пети
# print('19)', [s for s in range(1, 59) if not g(6, s, 1) and g(6, s, 2)])
print('20)', [s for s in range(1, 59) if not f(6, s, 1) and f(6, s, 3)])
# print('21)', [s for s in range(1, 59) if f(6, s, 4) and not f(6, s, 2)])
Ответ:10 19
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
def f(a, m):
    if a <= 20007: return m % 2 == 0
    if m == 0: return 0
    h = [f(a - 2, m - 1), f(a - 7, m - 1), f(a // 3, m - 1)]
    return any(h) if m % 2 != 0 else all(h)
# print('19)', [s for s in range(20008, 60039) if not f(s, 1) and f(s, 2)])
print('20)', [s for s in range(20008, 60039) if not f(s, 1) and f(s, 3)])
# print('21)', [s for s in range(20008, 60039) if f(s, 4) and not f(s, 2)])
Ответ:60026 60027
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания через пробел.
Ищем S: Петя выигрывает, но ни один ход Пети не ведёт в ≥63.

Ключ: ход Вани в позицию ≥63 означает, что Петя получает кучу ≥63 → ПЕТЯ ПРОИГРЫВАЕТ. Поэтому Ваня будет рад так сделать, и Петя не может на это рассчитывать.

Корректное условие «Петя выигрывает 2-м ходом независимо от Вани»:
∃ ход Пети m₁ < 63 такой, что ∀ ход Вани v из m₁:
— v < 63 (иначе Петя сам проигрывает) И
— ∃ ход Пети p₂ из v с p₂ ≥ 63.

from functools import lru_cache
T = 63
@lru_cache
def is_win(s):
    if s >= T: return False
    return any(not is_win(m) for m in [s+3, s+5, s*2])
def petya_2nd(S):
    fm = [S+3, S+5, S*2]
    if any(m >= T for m in fm): return False
    for m1 in fm:
        if all(v < T and any(p >= T for p in [v+3,v+5,v*2])
               for v in [m1+3, m1+5, m1*2]):
            return True
    return False
results = [s for s in range(1,T) if is_win(s) and petya_2nd(s)]
print(results[:2])  # [15, 24]

S=15: m₁=30. Ходы Вани: {33, 35, 60} — все <63.
— Из 33: Петя ×2=66≥63 ✓; Из 35: ×2=70≥63 ✓; Из 60: +3=63≥63 ✓.

S=24: m₁=29 (24+5). Ходы Вани: {32, 34, 58} — все <63.
— Из 32: Петя ×2=64≥63 ✓; Из 34: ×2=68≥63 ✓; Из 58: +5=63≥63 ✓.

(S=16 НЕ подходит: при m₁=32 Ваня может пойти в 64≥63 — Петя проиграет. Других подходящих m₁ нет.)

Ответ: 15 24.
Ответ:15 24
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
− Петя не может выиграть за один ход;
− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания через пробел.
status = {}
for s in range(200):
    if s >= 50: status[s] = False
for s in range(49, 0, -1):
    moves = [s+2, s+5, s*2]
    status[s] = any(m>=50 or (m in status and not status[m]) for m in moves)
T = 50; results = []
for S in range(1, 50):
    if not status[S]: continue
    if any(m >= T for m in [S+2, S+5, S*2]): continue  # уже выигрывает за 1 ход
    for m1 in [S+2, S+5, S*2]:
        ok = True
        for m2 in [m1+2, m1+5, m1*2]:
            if m2 >= T: ok=False; break         # Ваня отправляет Петю за порог
            if not any(m3>=T for m3 in [m2+2,m2+5,m2*2]):
                ok=False; break
        if ok: results.append(S); break
print(results[:2])  # [12, 18]
S=12: Петя→24 (×2). Ваня→26 (Петя→52✓), →29 (→58✓), →48 (→50✓).
S=18: Петя→23 (+5). Ваня→25 (→50✓), →28 (→56✓), →46 (→51✓).
Ответ:12 18