Задания
Версия для печати и копирования в MS Word
Тип 19 № 81485
i

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

— убрать из кучи 3 камня;

— убрать из кучи 6 кам­ней;

— умень­шить ко­ли­че­ство кам­ней в куче в 3 раза (ко­ли­че­ство кам­ней, по­лу­чен­ное при де­ле­нии, округ­ля­ет­ся до мень­ше­го).

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

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

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

Спрятать решение

Ре­ше­ние.

При­ведём ре­ше­ние на языке Python.

def Win(n, m):

return 0 if m <= 25 else any([Lose(n-1, m-3), Lose(n-1, m-6), Lose(n-1, m//3)])

def Lose(n, m):

return 1 if m <= 25 else 0 if not n else\

all([Win(n-1, m-3), Win(n-1, m-6), Win(n-1, m//3)])

print('19)', min(m for m in range(26, 100) if not Win(1, m) and Lose(2, m)))

 

 

Ответ: 78.


Аналоги к заданию № 81485: 81803 Все

Источник: ЕГЭ по ин­фор­ма­ти­ке 11.06.2025. Ос­нов­ная волна. Даль­ний Во­сток