Подготовка к школе
1 класс
2 класс
3 класс
4 класс
5 класс
6 класс
7 класс
8 класс
9 класс
10 класс
11 класс
ОГЭ
ЕГЭ
Для всех
Назад

20. Выигрышная стратегия: часть 2: все задания

Сообщить о проблеме
1. Задание #295167
Задание было решено верно
Задание было решено неверно

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

За один ход игрок может:
— добавить в одну из куч (по своему выбору) $4$ камня;
— увеличить количество камней в одной из куч (по своему выбору) в 3 раза.

Например, пусть в одной куче $20$ камней, а в другой $30$ камней; такую позицию в игре обозначим ($20, 30$). Тогда за один ход можно получить любую из четырёх позиций: $(24, 30), (20, 34), (60, 30), (20, 90).$

Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда суммарное количество камней в двух кучах становится не менее $154$. Победителем считается игрок, сделавший последний ход, то есть первым получивший такую игровую позицию, при которой в двух кучах суммарно $154$ камня или больше. В начальный момент в первой куче $11$ камней, во второй куче – $S$ камней; $1 \leq S \leq 142$.

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

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

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

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

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

Первый способ – математическое решение

Петя не должен выигрывать первым ходом, поэтому $11+3S<154$, откуда $S\le47$.

Проверяем возможные первые ходы Пети. Два наименьших подходящих значения получаются при $S=39$ и $S=40$. В обоих случаях Петя первым ходом утраивает первую кучу: $(11;S)\rightarrow(33;S)$.

Например, при $S=39$ Ваня может получить: $(37;39),\ (33;43),\ (99;39),\ (33;117)$.

Из каждой такой позиции Петя выигрывает следующим ходом:

  • $(37;39)\rightarrow(37;117)$, сумма $154$;
  • $(33;43)\rightarrow(33;129)$, сумма $162$;
  • $(99;39)\rightarrow(99;117)$, сумма $216$;
  • $(33;117)\rightarrow(37;117)$, сумма $154$.

При $S=40$ эта же стратегия также работает.

Для $S\le38$ гарантированной победы вторым ходом у Пети нет.

Второй способ – решение с помощью Python

def moves(a, b):
    return [(a + 4, b), (a, b + 4),
            (a * 3, b), (a, b * 3)]

def win1(a, b):
    return a + b < 154 and any(
        x + y >= 154 for x, y in moves(a, b)
    )

ans = []

for S in range(1, 143):
    if not win1(11, S):
        if any(
            all(
                x + y < 154 and win1(x, y)
                for x, y in moves(a, b)
            )
            for a, b in moves(11, S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[39,\ 40]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
2. Задание #295191
Задание было решено верно
Задание было решено неверно

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

За один ход игрок может:
— добавить в одну из куч (по своему выбору) $3$ камня;
— увеличить количество камней в одной из куч (по своему выбору) в 3 раза.

Например, пусть в одной куче $20$ камней, а в другой $30$ камней; такую позицию в игре обозначим (20, 30). Тогда за один ход можно получить любую из четырёх позиций: $(23, 30), (20, 33), (60, 30), (20, 90)$.

Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда суммарное количество камней в двух кучах становится не менее $176$. Победителем считается игрок, сделавший последний ход, то есть первым получивший такую игровую позицию, при которой в двух кучах суммарно $176$ камней или больше. В начальный момент в первой куче было 14 камней, во второй куче – $S$ камней; $1 \leq S \leq 161$.

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

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

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

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

Первый способ – математическое решение

Петя не должен выигрывать первым ходом, поэтому $14+3S<176$, откуда $S\leq53$.

Проверяем возможные первые ходы Пети. Два наименьших подходящих значения получаются при $S=42$ и $S=43$. В обоих случаях Петя первым ходом утраивает первую кучу:

$(14;S)\rightarrow(42;S)$.

Например, при $S=42$ Ваня может получить: $(45;42),\ (42;45),\ (126;42),\ (42;126)$.

Из каждой такой позиции Петя выигрывает следующим ходом:

  • $(45;42)\rightarrow(135;42)$, сумма $177$;
  • $(42;45)\rightarrow(42;135)$, сумма $177$;
  • $(126;42)\rightarrow(378;42)$, сумма $420$;
  • $(42;126)\rightarrow(42;378)$, сумма $420$.

При $S=43$ эта же стратегия также работает.

Для $S\leq41$ гарантированной победы вторым ходом у Пети нет.

Ответ: $42,\ 43$.

Второй способ – решение с помощью Python

def moves(a, b):
    return [(a + 3, b), (a, b + 3),
            (a * 3, b), (a, b * 3)]

def win1(a, b):
    return a + b < 176 and any(
        x + y >= 176 for x, y in moves(a, b)
    )

ans = []

for S in range(1, 162):
    if not win1(14, S):
        if any(
            all(
                x + y < 176 and win1(x, y)
                for x, y in moves(a, b)
            )
            for a, b in moves(14, S)
        ):
            ans.append(S)

print(ans[:2])

Программа проверяет, что Петя не может выиграть первым ходом, а затем ищет такой его ход, после которого при любом ходе Вани Петя выигрывает следующим ходом. Программа выведет: $[42,\ 43]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
3. Задание #295197
Задание было решено верно
Задание было решено неверно

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

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

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

В начальный момент в куче было $S$ камней, $1 \leq S \leq 68$. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

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

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

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

Первый способ – математическое решение

Петя не должен выигрывать первым ходом, поэтому $S\leq34$.

Чтобы Петя гарантированно выиграл вторым ходом, ему нужно первым ходом получить $34$ камня:

$34\rightarrow35\rightarrow70$,
$34\rightarrow68\rightarrow69$.

Независимо от хода Вани Петя следующим ходом выигрывает.

Получить $34$ первым ходом Петя может двумя способами:

$17\rightarrow34$;
$33\rightarrow34$.

Следовательно, два наименьших значения: $S=17$ и $S=33$.

Второй способ – решение с помощью Python

def moves(x):
    return [x + 1, x * 2]

def win1(x):
    return x < 69 and any(
        y >= 69 for y in moves(x)
    )

ans = []

for S in range(1, 69):
    if not win1(S):
        if any(
            all(
                y < 69 and win1(y)
                for y in moves(x)
            )
            for x in moves(S)
            if x < 69
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[17,\ 33]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
4. Задание #295200
Задание было решено верно
Задание было решено неверно

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

За один ход игрок может:
– добавить в одну из куч (по своему выбору) $4$ камня;
– увеличить количество камней в одной из куч (по своему выбору) в $2$ раза.

Например, пусть в одной куче $20$ камней, а в другой $30$ камней; такую позицию в игре обозначим $(20, 30)$. Тогда за один ход можно получить любую из четырёх позиций: $(24, 30)$, $(20, 34)$, $(40, 30)$, $(20, 60)$.

Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда суммарное количество камней в двух кучах становится не менее $133$. Победителем считается игрок, сделавший последний ход, то есть первым получивший такую игровую позицию, при которой в двух кучах суммарно $133$ камня или больше. В начальный момент в первой куче было $17$ камней, во второй куче – $S$ камней; $1 \leq S \leq 115$.

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

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

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

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

Первый способ – математическое решение

Петя не должен выигрывать первым ходом, поэтому $17+2S<133$, откуда $S\leq57$.

Первое подходящее значение: $S=28$. Петя удваивает вторую кучу: $(17;28)\rightarrow(17;56)$.

Ваня может получить: $(21;56)$, $(17;60)$, $(34;56)$, $(17;112)$.

Из каждой позиции Петя выигрывает следующим ходом:

  • $(21;56)\rightarrow(21;112)$, сумма $133$;
  • $(17;60)\rightarrow(17;120)$, сумма $137$;
  • $(34;56)\rightarrow(34;112)$, сумма $146$;
  • $(17;112)\rightarrow(21;112)$, сумма $133$.

Следующее подходящее значение: $S=48$. Петя удваивает первую кучу:

$(17;48)\rightarrow(34;48)$.

Ваня может получить: $(38;48)$, $(34;52)$, $(68;48)$, $(34;96)$. Из каждой такой позиции Петя выигрывает следующим ходом.

Для значений между $28$ и $48$ гарантированной победы вторым ходом у Пети нет.

Второй способ – решение с помощью Python

def moves(a, b):
    return [(a + 4, b), (a, b + 4),
            (a * 2, b), (a, b * 2)]

def win1(a, b):
    return a + b < 133 and any(
        x + y >= 133 for x, y in moves(a, b)
    )

ans = []

for S in range(1, 116):
    if not win1(17, S):
        if any(
            all(
                x + y < 133 and win1(x, y)
                for x, y in moves(a, b)
            )
            for a, b in moves(17, S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[28,\ 48]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
5. Задание #295203
Задание было решено верно
Задание было решено неверно

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

За один ход игрок может:
– добавить в одну из куч (по своему выбору) $1$ камень;
– увеличить количество камней в одной из куч (по своему выбору) в $3$ раза.

Например, пусть в одной куче $20$ камней, а в другой $30$ камней; такую позицию в игре обозначим $(20, 30)$. Тогда за один ход можно получить любую из четырёх позиций: $(21, 30)$, $(20, 31)$, $(60, 30)$, $(20, 90)$.

Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда суммарное количество камней в двух кучах становится не менее $155$. Победителем считается игрок, сделавший последний ход, то есть первым получивший такую игровую позицию, при которой в двух кучах суммарно $155$ камней или больше. В начальный момент в первой куче было $15$ камней, во второй куче – $S$ камней; $1 \leq S \leq 139$.

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

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

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

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

Первый способ – математическое решение

Петя не должен выигрывать первым ходом, поэтому $15+3S<155$, откуда $S\leq46$.

Первое подходящее значение: $S=19$. Петя утраивает первую кучу: $(15;19)\rightarrow(45;19)$.

Ваня может получить: $(46;19)$, $(45;20)$, $(135;19)$, $(45;57)$.

Из каждой такой позиции Петя выигрывает следующим ходом:

  • $(46;19)\rightarrow(138;19)$, сумма $157$;
  • $(45;20)\rightarrow(135;20)$, сумма $155$;
  • $(135;19)\rightarrow(136;19)$, сумма $155$;
  • $(45;57)\rightarrow(135;57)$, сумма $192$.

Второе подходящее значение: $S=46$. Петя добавляет $1$ камень в первую кучу:

$(15;46)\rightarrow(16;46)$.

После любого хода Вани Петя также сможет выиграть следующим ходом.

Два наименьших значения:

$S=19$ и $S=46$.

Ответ: $19,\ 46$.

Второй способ – решение с помощью Python

def moves(a, b):
    return [(a + 1, b), (a, b + 1),
            (a * 3, b), (a, b * 3)]

def win1(a, b):
    return a + b < 155 and any(
        x + y >= 155 for x, y in moves(a, b)
    )

ans = []

for S in range(1, 140):
    if not win1(15, S):
        if any(
            all(
                x + y < 155 and win1(x, y)
                for x, y in moves(a, b)
            )
            for a, b in moves(15, S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[19,\ 46]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
6. Задание #295206
Задание было решено верно
Задание было решено неверно

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

За один ход игрок может:
– убрать из кучи $3$ камня;
– убрать из кучи $8$ камней;
– уменьшить количество камней в куче в $3$ раза (количество камней, полученное при делении, округляется до меньшего).

Например, из кучи в $20$ камней за один ход можно получить кучу из $17$, $12$ или $6$ камней.

Игра завершается, когда количество камней в куче становится не более $16$. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из $16$ или менее камней. В начальный момент в куче было $S$ камней, $S \geq 17$.

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

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

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

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

Первый способ – математическое решение

За один ход можно выиграть из позиций от $17$ до $50$. Значит, Петя не может выиграть первым ходом при $S\geq51$.

Чтобы Петя гарантированно выиграл вторым ходом, после его первого хода должно остаться $51$, $52$ или $53$ камня:

$51\rightarrow48,\ 43,\ 17$;
$52\rightarrow49,\ 44,\ 17$;
$53\rightarrow50,\ 45,\ 17$.

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

Два наименьших начальных значения, из которых Петя может получить такие позиции:

$54\rightarrow51$;
$55\rightarrow52$.

Два наименьших значения: $54$ и $55$.

Второй способ – решение с помощью Python

def moves(x):
    return [x - 3, x - 8, x // 3]

def win1(x):
    return x > 16 and any(
        y <= 16 for y in moves(x)
    )

ans = []

for S in range(17, 1000):
    if not win1(S):
        if any(
            x > 16 and all(
                y > 16 and win1(y)
                for y in moves(x)
            )
            for x in moves(S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[54,\ 55]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
7. Задание #295209
Задание было решено верно
Задание было решено неверно

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

За один ход игрок может:
– убрать из кучи $2$ камня;
– убрать из кучи $4$ камня;
– уменьшить количество камней в куче в $3$ раза (количество камней, полученное при делении, округляется до меньшего).

Например, из кучи в $20$ камней за один ход можно получить кучу из $18$, $16$ или $6$ камней.

Игра завершается, когда количество камней в куче становится не более $17$. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из $17$ или менее камней. В начальный момент в куче было $S$ камней, $S \geq 18$.

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

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

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

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

Первый способ – математическое решение

За один ход можно выиграть из позиций от $18$ до $53$. Значит, Петя не может выиграть первым ходом при $S\geq54$.

Пете выгодно первым ходом оставить $54$ или $55$ камней:

$54\rightarrow52,\ 50,\ 18$;
$55\rightarrow53,\ 51,\ 18$.

Из каждой полученной позиции Петя следующим ходом сможет получить не более $17$ камней.

Два наименьших начальных значения, из которых Петя может получить $54$ или $55$:

$56\rightarrow54$;
$57\rightarrow55$.

Второй способ – решение с помощью Python

def moves(x):
    return [x - 2, x - 4, x // 3]

def win1(x):
    return x > 17 and any(
        y <= 17 for y in moves(x)
    )

ans = []

for S in range(18, 1000):
    if not win1(S):
        if any(
            x > 17 and all(
                y > 17 and win1(y)
                for y in moves(x)
            )
            for x in moves(S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[56,\ 57]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
8. Задание #295214
Задание было решено верно
Задание было решено неверно

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

За один ход игрок может:
– убрать из кучи $3$ камня;
– убрать из кучи $7$ камней;
– уменьшить количество камней в куче в $4$ раза (количество камней, полученное при делении, округляется до меньшего).

Например, из кучи в $20$ камней за один ход можно получить кучу из $17$, $13$ или $5$ камней.

Игра завершается, когда количество камней в куче становится не более $15$. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из $15$ или менее камней. В начальный момент в куче было $S$ камней, $S \geq 16$.

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

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

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

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

Первый способ – математическое решение

За один ход можно выиграть из позиций от $16$ до $63$. Значит, Петя не может выиграть первым ходом при $S\geq64$.

Чтобы гарантированно выиграть вторым ходом, Петя первым ходом должен получить $64$, $65$ или $66$ камней.

Например: $64\rightarrow61,\ 57,\ 16$.

Из каждой такой позиции Петя следующим ходом выигрывает:

$61\rightarrow15$;
$57\rightarrow14$;
$16\rightarrow13$.

Два наименьших начальных значения:

$67\rightarrow64$;
$68\rightarrow65$.

Второй способ – решение с помощью Python

def moves(x):
    return [x - 3, x - 7, x // 4]

def win1(x):
    return x > 15 and any(
        y <= 15 for y in moves(x)
    )

ans = []

for S in range(16, 1000):
    if not win1(S):
        if any(
            x > 15 and all(
                y > 15 and win1(y)
                for y in moves(x)
            )
            for x in moves(S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[67,\ 68]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
9. Задание #295219
Задание было решено верно
Задание было решено неверно

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

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

Игра завершается в тот момент, когда количество камней в куче становится не менее $67$.

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

В начальный момент в куче было $S$ камней; $1 \leq S \leq 66$.

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

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

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

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

Первый способ – математическое решение

Петя не должен выигрывать первым ходом, поэтому $S\leq22$.

Чтобы гарантированно выиграть вторым ходом, Петя первым ходом должен получить $22$ камня.

После этого Ваня может получить: $22\rightarrow23,\ 26,\ 66$.

Из каждой такой позиции Петя выигрывает следующим ходом:

$23\rightarrow69$;
$26\rightarrow78$;
$66\rightarrow67$.

Получить $22$ камня Петя может двумя минимальными способами:

$18\rightarrow22$;
$21\rightarrow22$.

Второй способ – решение с помощью Python

def moves(x):
    return [x + 1, x + 4, x * 3]

def win1(x):
    return x < 67 and any(
        y >= 67 for y in moves(x)
    )

ans = []

for S in range(1, 67):
    if not win1(S):
        if any(
            x < 67 and all(
                y < 67 and win1(y)
                for y in moves(x)
            )
            for x in moves(S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[18,\ 21]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
10. Задание #295222
Задание было решено верно
Задание было решено неверно

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

За один ход игрок может:
– убрать из кучи $2$ камня;
– убрать из кучи $4$ камня;
– уменьшить количество камней в куче в $4$ раза (количество камней, полученное при делении, округляется до меньшего).

Например, из кучи в $20$ камней за один ход можно получить кучу из $18$, $16$ или $5$ камней.

Игра завершается, когда количество камней в куче становится не более $23$. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из $23$ или менее камней. В начальный момент в куче было $S$ камней, $S \geq 24$.

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

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

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

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

Первый способ – математическое решение

За один ход можно выиграть из позиций от $24$ до $95$. Значит, Петя не может выиграть первым ходом при $S\geq96$.

Пете первым ходом нужно получить $96$ или $97$ камней.

Для $96$ возможны ходы Вани: $96\rightarrow94,\ 92,\ 24$.

Для $97$: $97\rightarrow95,\ 93,\ 24$.

Все полученные позиции находятся в диапазоне от $24$ до $95$, поэтому Петя следующим ходом выигрывает.

Два наименьших начальных значения:

$98\rightarrow96$;
$99\rightarrow97$.

Второй способ – решение с помощью Python

def moves(x):
    return [x - 2, x - 4, x // 4]

def win1(x):
    return x > 23 and any(
        y <= 23 for y in moves(x)
    )

ans = []

for S in range(24, 1000):
    if not win1(S):
        if any(
            x > 23 and all(
                y > 23 and win1(y)
                for y in moves(x)
            )
            for x in moves(S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[98,\ 99]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
11. Задание #295228
Задание было решено верно
Задание было решено неверно

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

За один ход игрок может:
– убрать из кучи $3$ камня;
– убрать из кучи $5$ камней;
– уменьшить количество камней в куче в $4$ раза (количество камней, полученное при делении, округляется до меньшего).

Например, из кучи в $20$ камней за один ход можно получить кучу из $17$, $15$ или $5$ камней.

Игра завершается, когда количество камней в куче становится не более $30$. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из $30$ или менее камней. В начальный момент в куче было $S$ камней, $S \geq 31$.

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

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

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

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

Первый способ – математическое решение

За один ход можно выиграть из позиций от $31$ до $123$. Значит, Петя не может выиграть первым ходом при $S\geq124$.

Пете первым ходом нужно получить $124$, $125$ или $126$ камней.

Например: $124\rightarrow121,\ 119,\ 31$.

Из каждой такой позиции Петя следующим ходом выигрывает.

Два наименьших начальных значения:

$127\rightarrow124$;
$128\rightarrow125$.

Второй способ – решение с помощью Python

def moves(x):
    return [x - 3, x - 5, x // 4]

def win1(x):
    return x > 30 and any(
        y <= 30 for y in moves(x)
    )

ans = []

for S in range(31, 1000):
    if not win1(S):
        if any(
            x > 30 and all(
                y > 30 and win1(y)
                for y in moves(x)
            )
            for x in moves(S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[127,\ 128]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
12. Задание #295231
Задание было решено верно
Задание было решено неверно

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

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

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

В начальный момент в куче было $S$ камней, $1 \leq S \leq 65$.

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

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

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

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

Первый способ – математическое решение

Петя не должен выигрывать первым ходом, поэтому $S\leq32$.

Чтобы Петя гарантированно выиграл вторым ходом, первым ходом ему нужно получить $32$ камня: $32\rightarrow33$ или $32\rightarrow64$.

Из обеих позиций Петя следующим ходом выигрывает:

$33\rightarrow66$;
$64\rightarrow128$.

Получить $32$ камня Петя может двумя способами:

$16\rightarrow32$;
$31\rightarrow32$.

Второй способ – решение с помощью Python

def moves(x):
    return [x + 1, x * 2]

def win1(x):
    return x < 66 and any(
        y >= 66 for y in moves(x)
    )

ans = []

for S in range(1, 66):
    if not win1(S):
        if any(
            x < 66 and all(
                y < 66 and win1(y)
                for y in moves(x)
            )
            for x in moves(S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[16,\ 31]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
13. Задание #295235
Задание было решено верно
Задание было решено неверно

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

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

Игра завершается в тот момент, когда количество камней в куче становится не менее $58$.

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

В начальный момент в куче было $S$ камней; $1 \leq S \leq 57$.

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

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

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

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

Первый способ – математическое решение

Петя не должен выигрывать первым ходом, поэтому $S\leq28$.

Чтобы гарантированно выиграть вторым ходом, Петя первым ходом должен получить $28$ камней.

После этого Ваня может получить: $28\rightarrow29,\ 32,\ 56$.

Из каждой такой позиции Петя выигрывает следующим ходом:

$29\rightarrow58$;
$32\rightarrow64$;
$56\rightarrow60$.

Получить $28$ камней Петя может тремя способами:

$14\rightarrow28$;
$24\rightarrow28$;
$27\rightarrow28$.

Два наименьших значения: $14$ и $24$.

Ответ: $14,\ 24$.

Второй способ – решение с помощью Python

def moves(x):
    return [x + 1, x + 4, x * 2]

def win1(x):
    return x < 58 and any(
        y >= 58 for y in moves(x)
    )

ans = []

for S in range(1, 58):
    if not win1(S):
        if any(
            x < 58 and all(
                y < 58 and win1(y)
                for y in moves(x)
            )
            for x in moves(S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[14,\ 24]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
14. Задание #295261
Задание было решено верно
Задание было решено неверно

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

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

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

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

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

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

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

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

Первый способ – математическое решение

Петя не должен выигрывать первым ходом, поэтому $7+2S<81$, откуда $S\leq36$.

Первое подходящее значение: $S=33$. Петя удваивает первую кучу: $(7;33)\rightarrow(14;33)$.

Ваня может получить: $(15;33)$, $(14;34)$, $(28;33)$, $(14;66)$.

Из каждой такой позиции Петя выигрывает следующим ходом:

  • $(15;33)\rightarrow(15;66)$, сумма $81$;
  • $(14;34)\rightarrow(14;68)$, сумма $82$;
  • $(28;33)\rightarrow(56;33)$, сумма $89$;
  • $(14;66)\rightarrow(15;66)$, сумма $81$.

Второе подходящее значение: $S=36$. Петя добавляет $1$ камень в первую кучу:

$(7;36)\rightarrow(8;36)$.

После любого хода Вани Петя также сможет выиграть следующим ходом.

Второй способ – решение с помощью Python

def moves(a, b):
    return [(a + 1, b), (a, b + 1),
            (a * 2, b), (a, b * 2)]

def win1(a, b):
    return a + b < 81 and any(
        x + y >= 81 for x, y in moves(a, b)
    )

ans = []

for S in range(1, 74):
    if not win1(7, S):
        if any(
            all(
                x + y < 81 and win1(x, y)
                for x, y in moves(a, b)
            )
            for a, b in moves(7, S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[33,\ 36]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
15. Задание #295265
Задание было решено верно
Задание было решено неверно

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

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

Игра завершается в тот момент, когда количество камней в куче становится не менее $51$.

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

В начальный момент в куче было $S$ камней; $1 \leq S \leq 50$.

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

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

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

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

Первый способ – математическое решение

Петя не должен выигрывать первым ходом, поэтому $S\leq25$.

Чтобы гарантированно выиграть вторым ходом, Петя первым ходом должен получить $25$ камней.

После этого Ваня может получить: $25\rightarrow26,\ 29,\ 50$.

Из каждой такой позиции Петя выигрывает следующим ходом:

$26\rightarrow52$;
$29\rightarrow58$;
$50\rightarrow51$.

Получить $25$ камней Петя может двумя минимальными способами:

$21\rightarrow25$;
$24\rightarrow25$.

Второй способ – решение с помощью Python

def moves(x):
    return [x + 1, x + 4, x * 2]

def win1(x):
    return x < 51 and any(
        y >= 51 for y in moves(x)
    )

ans = []

for S in range(1, 51):
    if not win1(S):
        if any(
            x < 51 and all(
                y < 51 and win1(y)
                for y in moves(x)
            )
            for x in moves(S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[21,\ 24]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
16. Задание #295269
Задание было решено верно
Задание было решено неверно

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

За один ход игрок может:
– добавить в одну из куч (по своему выбору) $2$ камня;
– увеличить количество камней в одной из куч (по своему выбору) в $2$ раза.

Например, пусть в одной куче $20$ камней, а в другой $30$ камней; такую позицию в игре обозначим $(20, 30)$. Тогда за один ход можно получить любую из четырёх позиций: $(22, 30)$, $(20, 32)$, $(40, 30)$, $(20, 60)$.

Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда суммарное количество камней в двух кучах становится не менее $169$. Победителем считается игрок, сделавший последний ход, то есть первым получивший такую игровую позицию, при которой в двух кучах суммарно $169$ камней или больше. В начальный момент в первой куче было $14$ камней, во второй куче – $S$ камней; $1 \leq S \leq 154$.

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

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

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

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

Первый способ – математическое решение

Петя не должен выигрывать первым ходом, поэтому $14+2S<169$, откуда $S\leq77$.

Первое подходящее значение: $S=70$. Петя удваивает первую кучу: $(14;70)\rightarrow(28;70)$.

Ваня может получить: $(30;70),\ (28;72),\ (56;70),\ (28;140)$.

Из каждой такой позиции Петя выигрывает следующим ходом:

  • $(30;70)\rightarrow(30;140)$, сумма $170$;
  • $(28;72)\rightarrow(28;144)$, сумма $172$;
  • $(56;70)\rightarrow(56;140)$, сумма $196$;
  • $(28;140)\rightarrow(30;140)$, сумма $170$.

Второе подходящее значение: $S=75$. Петя добавляет $2$ камня во вторую кучу: $(14;75)\rightarrow(14;77)$.

После любого хода Вани Петя также сможет выиграть следующим ходом.

Для $S<70$ подходящей позиции после первого хода Пети нет.

Второй способ – решение с помощью Python

def moves(a, b):
    return [(a + 2, b), (a, b + 2),
            (a * 2, b), (a, b * 2)]

def win1(a, b):
    return a + b < 169 and any(
        x + y >= 169 for x, y in moves(a, b)
    )

ans = []

for S in range(1, 155):
    if not win1(14, S):
        if any(
            all(
                x + y < 169 and win1(x, y)
                for x, y in moves(a, b)
            )
            for a, b in moves(14, S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[70,\ 75]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
17. Задание #295273
Задание было решено верно
Задание было решено неверно

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

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

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

В начальный момент в куче было $S$ камней, $1 \leq S \leq 37$.

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

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

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

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

Первый способ – математическое решение

Петя не должен выигрывать первым ходом, поэтому $S\leq18$.

Чтобы гарантированно выиграть вторым ходом, Петя первым ходом должен получить $18$ камней.

После этого Ваня может получить:

$18\rightarrow19$;
$18\rightarrow36$.

Из обеих позиций Петя выигрывает следующим ходом:

$19\rightarrow38$;
$36\rightarrow72$.

Получить $18$ камней Петя может двумя способами:

$9\rightarrow18$;
$17\rightarrow18$.

Ответ: $9,\ 17$.

Второй способ – решение с помощью Python

def moves(x):
    return [x + 1, x * 2]

def win1(x):
    return x < 38 and any(
        y >= 38 for y in moves(x)
    )

ans = []

for S in range(1, 38):
    if not win1(S):
        if any(
            x < 38 and all(
                y < 38 and win1(y)
                for y in moves(x)
            )
            for x in moves(S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[9,\ 17]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
18. Задание #295277
Задание было решено верно
Задание было решено неверно

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

За один ход игрок может:
– добавить в одну из куч (по своему выбору) $3$ камня;
– увеличить количество камней в одной из куч (по своему выбору) в $2$ раза.

Например, пусть в одной куче $20$ камней, а в другой $30$ камней; такую позицию в игре обозначим $(20, 30)$. Тогда за один ход можно получить любую из четырёх позиций: $(23, 30)$, $(20, 33)$, $(40, 30)$, $(20, 60)$.

Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда суммарное количество камней в двух кучах становится не менее $135$. Победителем считается игрок, сделавший последний ход, то есть первым получивший такую игровую позицию, при которой в двух кучах суммарно $135$ камней или больше. В начальный момент в первой куче было $13$ камней, во второй куче – $S$ камней; $1 \leq S \leq 121$.

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

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

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

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

Первый способ – математическое решение

Петя не должен выигрывать первым ходом, поэтому $13+2S<135$, откуда $S\leq60$.

Первое подходящее значение: $S=30$. Петя удваивает вторую кучу: $(13;30)\rightarrow(13;60)$.

Ваня может получить: $(16;60),\ (13;63),\ (26;60),\ (13;120)$.

Из каждой такой позиции Петя выигрывает следующим ходом:

  • $(16;60)\rightarrow(16;120)$, сумма $136$;
  • $(13;63)\rightarrow(13;126)$, сумма $139$;
  • $(26;60)\rightarrow(26;120)$, сумма $146$;
  • $(13;120)\rightarrow(16;120)$, сумма $136$.

Второе подходящее значение: $S=53$. Петя удваивает первую кучу: $(13;53)\rightarrow(26;53)$.

После любого хода Вани Петя также сможет выиграть следующим ходом.

Второй способ – решение с помощью Python

def moves(a, b):
    return [(a + 3, b), (a, b + 3),
            (a * 2, b), (a, b * 2)]

def win1(a, b):
    return a + b < 135 and any(
        x + y >= 135 for x, y in moves(a, b)
    )

ans = []

for S in range(1, 122):
    if not win1(13, S):
        if any(
            all(
                x + y < 135 and win1(x, y)
                for x, y in moves(a, b)
            )
            for a, b in moves(13, S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[30,\ 53]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
19. Задание #295281
Задание было решено верно
Задание было решено неверно

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

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

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

В начальный момент в первой куче было шесть камней, во второй куче – $S$ камней; $1 \leq S \leq 58$.

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

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

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

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

Первый способ – математическое решение

Первое подходящее значение: $S=10$. Петя утраивает первую кучу: $(6;10)\rightarrow(18;10)$.

Ваня может получить: $(19;10),\ (18;11),\ (54;10),\ (18;30)$.

Из каждой такой позиции Петя выигрывает следующим ходом:

  • $(19;10)\rightarrow(57;10)$, сумма $67$;
  • $(18;11)\rightarrow(54;11)$, сумма $65$;
  • $(54;10)\rightarrow(55;10)$, сумма $65$;
  • $(18;30)\rightarrow(18;90)$, сумма $108$.

Второе подходящее значение: $S=19$. Петя добавляет $1$ камень в первую кучу: $(6;19)\rightarrow(7;19)$.

После любого хода Вани Петя также сможет выиграть следующим ходом.

Два наименьших значения: $S=10$ и $S=19$.

Второй способ – решение с помощью Python

def moves(a, b):
    return [(a + 1, b), (a, b + 1),
            (a * 3, b), (a, b * 3)]

def win1(a, b):
    return a + b < 65 and any(
        x + y >= 65 for x, y in moves(a, b)
    )

ans = []

for S in range(1, 59):
    if not win1(6, S):
        if any(
            all(
                x + y < 65 and win1(x, y)
                for x, y in moves(a, b)
            )
            for a, b in moves(6, S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[10,\ 19]$.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
20. Задание #295286
Задание было решено верно
Задание было решено неверно

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

За один ход игрок может:
– убрать из кучи $3$ камня;
– убрать из кучи $5$ камней;
– уменьшить количество камней в куче в $4$ раза (количество камней, полученное при делении, округляется до меньшего).

Например, из кучи в $20$ камней за один ход можно получить кучу из $17$, $15$ или $5$ камней.

Игра завершается, когда количество камней в куче становится не более $10$. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из $10$ или менее камней. В начальный момент в куче было $S$ камней, $S \geq 11$.

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

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

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

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

Первый способ – математическое решение

За один ход можно выиграть из позиций от $11$ до $43$. Значит, Петя не может выиграть первым ходом при $S\geq44$.

Пете первым ходом нужно получить $44$, $45$ или $46$ камней.

Например, для $44$ Ваня может получить: $44\rightarrow41,\ 39,\ 11$.

Из каждой такой позиции Петя следующим ходом выигрывает:

$41\rightarrow10$;
$39\rightarrow9$;
$11\rightarrow8$.

Два наименьших начальных значения:

$47\rightarrow44$;
$48\rightarrow45$.

Второй способ – решение с помощью Python

def moves(x):
    return [x - 3, x - 5, x // 4]

def win1(x):
    return x > 10 and any(
        y <= 10 for y in moves(x)
    )

ans = []

for S in range(11, 1000):
    if not win1(S):
        if any(
            x > 10 and all(
                y > 10 and win1(y)
                for y in moves(x)
            )
            for x in moves(S)
        ):
            ans.append(S)

print(ans[:2])

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

Программа выведет: $[47,\ 48]$.

Показать
Очки опыта 20
Спросить Зави
03:50:00
Решено заданий: 0 из
0 заданий сегодня