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

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

Для игры, описанной в задании 19, найдите значение S, при котором одновременно выполняются два условия:
— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; — у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:32
📚 Все задачи с разбором 86
Для игры, описанной в задании 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)])
Ответ:55
Для игры, описанной в задании 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)])
Ответ:87
Для игры, описанной в задании 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)])
Ответ:85 93
Для игры, описанной в задании 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)])
Ответ:132
Для игры, описанной в задании 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)])
Ответ:32
Для игры, описанной в задании 19, найдите значение S, при котором одновременно выполняются два условия:
— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; — у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ: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)])
Ответ:55
Для игры, описанной в задании 19, найдите минимальное значение S, при котором одновременно выполняются два условия:
– у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; – у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:17
Для игры, описанной в задании 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)])
Ответ:21) [32, 33, 34]
Для игры, описанной в задании 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)])
Ответ:57
Для игры, описанной в задании 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)])
Ответ:93
Для игры, описанной в задании 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)])
Ответ:67
Для игры, описанной в задании 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)])
Ответ:54
Для игры, описанной в задании 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)])
Ответ:64
Для игры, описанной в задании 19, найдите значение S, при котором одновременно выполняются два условия:
— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; — у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:32
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 2 камня; - добавить в кучу 5 камней; - увеличить количество камней в куче в 3 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 22, 25 или 60 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 97. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 97 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 96. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19100, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:24
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 3 камня; - добавить в кучу 7 камней; - увеличить количество камней в куче в 2 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 23, 27 или 40 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 89. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 89 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 88. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19101, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:32
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 4 камня; - добавить в кучу 6 камней; - увеличить количество камней в куче в 3 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 24, 26 или 60 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 100. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 100 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 99. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19102, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:20
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 2 камня; - добавить в кучу 9 камней; - увеличить количество камней в куче в 2 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 22, 29 или 40 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 71. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 71 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 70. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19103, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:23
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 5 камня; - добавить в кучу 8 камней; - увеличить количество камней в куче в 2 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 25, 28 или 40 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 121. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 121 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 120. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19104, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:43
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 3 камня; - добавить в кучу 4 камней; - увеличить количество камней в куче в 4 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 23, 24 или 80 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 140. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 140 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 139. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19105, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:25
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 6 камня; - добавить в кучу 11 камней; - увеличить количество камней в куче в 2 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 26, 31 или 40 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 90. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 90 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 89. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19106, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:23
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 1 камня; - добавить в кучу 8 камней; - увеличить количество камней в куче в 3 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 21, 28 или 60 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 82. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 82 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 81. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19107, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:18
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 4 камня; - добавить в кучу 9 камней; - увеличить количество камней в куче в 2 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 24, 29 или 40 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 96. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 96 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 95. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19108, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:31
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: - добавить в кучу 7 камня; - добавить в кучу 10 камней; - увеличить количество камней в куче в 2 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 27, 30 или 40 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 130. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 130 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 129. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19109, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:41
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 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)])
Ответ:197
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 1 или 3 камня либо увеличить количество камней в куче в 2 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 172. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 172 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 171. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19111, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:81
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч 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)])
Ответ:57
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 2 или 4 камня либо увеличить количество камней в куче в 2 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 125. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 125 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 124. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19113, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:55
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 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)])
Ответ:226
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 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)])
Ответ:83
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 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)])
Ответ:271
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 1 или 5 камня либо увеличить количество камней в куче в 3 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 155. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 155 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 154. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19117, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:45
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 6 или 9 камня либо увеличить количество камней в куче в 2 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 230. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 230 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 229. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19118, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:94
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 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)])
Ответ:322
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 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)])
Ответ:65
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 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)])
Ответ:686
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 2 или 6 камня либо увеличить количество камней в куче в 5 раза. Для того, чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 350. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 350 или более камней. В начальный момент в куче было S камней; 1 ≤ S ≤ 349. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19122, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:60
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 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)])
Ответ:564
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 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)])
Ответ:51
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч 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)])
Ответ:564
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч 2 камня или уменьшить количество камней в выбранной куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 60. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 60 или меньше камней. В начальный момент в первой куче было 30 камней, во второй куче — S камней, 20 < S ≤ 180. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Для игры, описанной в задании 19126, найдите минимальное значение S, при котором одновременно выполняются два условия: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:67
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:103
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:165
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 23. Для игры, описанной в задании 19129, найдите минимальное значение S, при котором одновременно выполняются два условия: – у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; – у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:54
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:3
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:54 56
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:56
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:165
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 28. Для игры, описанной в задании 19134, найдите минимальное значение S, при котором одновременно выполняются два условия: – у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; – у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:54
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:3
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:56
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:165
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:54 56
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 44 камней, во второй куче – S камней, S > 33. Для игры, описанной в задании 19139, найдите минимальное значение S, при котором одновременно выполняются два условия: – у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; – у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:54
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:3
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:56
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:252
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из трёх позиций: (3, 9), (6, 6), и (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 66. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 66 или меньше камней. В начальный момент в первой куче было 45 камней, во второй куче – S камней, S > 22. Для игры, описанной в задании 19143, найдите минимальное значение S, при котором одновременно выполняются два условия: – у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; – у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:52
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:4
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:93
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч три камня или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 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)])
Ответ:252
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может выполнить ровно одно из действий: 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)])
Ответ:18
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может выполнить ровно одно из действий: 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, при котором одновременно выполняются два условия: – у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; – у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:24
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может выполнить ровно одно из действий: 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)])
Ответ:24
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может выполнить ровно одно из действий: 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, при котором одновременно выполняются два условия: – у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; – у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений 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)])
Ответ:24
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может выполнить ровно одно из действий: 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)])
Ответ:1
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч 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)])
Ответ:10 13
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч 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)])
Ответ:10
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч 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)])
Ответ:13
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч 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)])
Ответ:13
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 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)])
Ответ:11 12
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 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)])
Ответ:7 10
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 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)])
Ответ:7 10
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 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)])
Ответ:7 10
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 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)])
Ответ:9 13
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 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)])
Ответ:9 13
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 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)])
Ответ:9 13
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 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)])
Ответ:9 13
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 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)])
Ответ:9 13
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может увеличить количество камней ровно в одной куче: добавить 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)])
Ответ:9 13
Для игры, описанной в задании 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)])
Ответ:18
Для игры, описанной в задании 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)])
Ответ:60028
Для игры, описанной в задании 19, найдите наименьшее значение S, при котором одновременно выполняются два условия: − у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым своим ходом при любой игре Пети; − у Вани нет стратегии, которая позволит ему гарантированно выиграть только своим первым ходом. В ответе запишите только целое число.
Ключ: если Петя из позиции v может пойти в p₂ ≥ 63, то Ваня получает ≥63 и ПРОИГРЫВАЕТ. Поэтому Ваня не должен рассчитывать на такие позиции v.

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])
@lru_cache
def vanya_n(p, n):
    if p >= T: return False  # Ваня уже проиграл
    vo = [p+3, p+5, p*2]
    if any(v >= T for v in vo): return True  # Ваня выигрывает за 1
    if n <= 1: return False
    for v in vo:
        p2s = [v+3, v+5, v*2]
        if any(p2 >= T for p2 in p2s): continue  # Петя выиграет
        if all(vanya_n(p2, n-1) for p2 in p2s): return True
    return False
for S in range(1, T):
    if is_win(S): continue
    fm = [S+3, S+5, S*2]
    if not all(vanya_n(p, 2) for p in fm): continue
    if all(p < T and any(v >= T for v in [p+3,p+5,p*2]) for p in fm):
        continue  # 1-ходовая стратегия — не подходит
    print(S); break  # 21

Проверка S=21: Петя ходит → {24, 26, 42}.
• Петя→42: Ваня сразу побеждает (42×2=84≥63) ✓
• Петя→24: Ваня→29 (24+5). Петя из 29 → {32, 34, 58} (все <63):
— Из 32: Ваня×2=64≥63 ✓; Из 34: ×2=68≥63 ✓; Из 58: +5=63≥63 ✓
• Петя→26: Ваня→29 (26+3). Аналогично выше ✓
Ваня выигрывает за ≤2 хода ✓. Но при Петя→24 и Петя→26 Ваня НЕ может за 1 ход — условие «не только 1-м» ✓

Почему S=12 НЕ подходит: при Петя→17 Ваня в тупике. Ходы Вани {20, 22, 34}:
• v=20: Петя из 20 → {23, 25, 40}, ни в одной Ваня не выиграет за 1 ход.
• v=22: Петя из 22 → {25, 27, 44}, аналогично.
• v=34: Петя может пойти в 68≥63 — Ваня проигрывает!

Ответ: 21.
Ответ:21
Для игры, описанной в задании 19, найдите наименьшее значение S, при котором одновременно выполняются два условия:
− у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым своим ходом при любой игре Пети;
− у Вани нет стратегии, которая позволит ему гарантированно выиграть только своим первым ходом при любой игре Пети.
В ответе запишите только целое число.
T = 50
# Позиции: W=Петя выигрывает, L=Ваня выигрывает
from functools import lru_cache
@lru_cache(maxsize=None)
def is_win(s):
    if s >= T: return False
    return any(not is_win(m) for m in [s+2, s+5, s*2])
def vanya_wins_le2(S):
    # Для ВСЕХ ходов Пети p (Ваня получает p):
    for p in [S+2, S+5, S*2]:
        if p >= T: return False  # Петя загоняет Ваню в ≥T — Ваня проигрывает
        v_opts = [p+2, p+5, p*2]
        if any(v >= T for v in v_opts): continue  # Ваня выигрывает с 1-го хода ✓
        # Ваня ищет 1-й ход v<T такой, что для ВСЕХ ходов Пети p2 из v
        # Петя НЕ может уйти в ≥T (иначе Ваня получает ≥T) И Ваня из p2 → ≥T
        found = False
        for v in v_opts:
            p2s = [v+2, v+5, v*2]
            if any(p2 >= T for p2 in p2s): continue  # Петя уйдёт в ≥T, Ваня получит и проиграет
            if all(any(v2 >= T for v2 in [p2+2, p2+5, p2*2]) for p2 in p2s):
                found = True; break
        if not found: return False
    return True
def vanya_1move_all(S):
    return all(p < T and any(v >= T for v in [p+2,p+5,p*2]) for p in [S+2,S+5,S*2])
for S in range(1, T):
    if is_win(S): continue  # Петя выигрывает
    if vanya_wins_le2(S) and not vanya_1move_all(S):
        print(S); break  # 16
S=16, ходы Пети: 18, 21, 32.
• Петя→32: Ваня→64≥50 — Ваня выигрывает с 1-го хода ✓
• Петя→18: Ваня 1-м ходом не может (20,23,36 — все <50). Ваня→23: Петя из 23→{25,28,46} — все <50; из 25,28,46 Ваня всегда идёт ≥50 ✓
• Петя→21: аналогично, Ваня→23 — тот же анализ ✓
Ваня побеждает за ≤2 хода при любой игре Пети. При Петя→18 или →21 Ваня не может выиграть с первого хода ✓.
Ответ:16