Тема 19. Теория игр

19.02 Перекладывание камней две кучи

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела теория игр
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#56415

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

Какое наименьшее число камней могло быть суммарно в двух кучах?

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

Возьмём минимально возможную сумму: 61  . Пусть в одной куче был 1  камень, тогда, во второй куче камней было от 30  до 59  . Так как нам необходимо минимальное количество камней, то берем число 30  . Общая сумма: 1 + 30 = 31  .

Программная реализация:

from functools import lru_cache
@lru_cache(None)
def f(a,b,c = 0):
    if a+b >= 61:
        return 0
    if c > 2:
        return 10000
    if a > b: t = [f(a+i,b,c+1) for i in range(1, a+1)]
    else: t = [f(a,b+i,c+1) for i in range(1, b+1)]
    n = [i for i in t if i <= 0]
    if n:
        return -max(n) + 1
    return -max(t)
ans = []
for i in range(1,61):
    for j in range(1,61):
        if f(i,j) == 1:
            ans += [i+j]
print(min(ans))

Ответ: 31

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!