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

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

1)  убрать из кучи пять кам­ней;

2)  если ко­ли­че­ство кам­ней в куче чётно, умень­шить его в два раза;

3)  если ко­ли­че­ство кам­ней в куче крат­но трём, умень­шить его в три раза;

4)  если ко­ли­че­ство кам­ней в куче нечётно и не крат­но трём, до­ба­вить один ка­мень.

На­при­мер, если в куче 12 кам­ней, то за один ход можно по­лу­чить 7, 6 или 4 камня, а если в куче 11 кам­ней, то за один ход можно по­лу­чить 6 или 12 кам­ней.

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

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

В на­ча­ле игры в куче было S кам­ней, S > 19.

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

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

Ре­ше­ние.

Такое зна­че­ние S  — 25. Своим пер­вым ходом Петя может по­лу­чить по­зи­цию 20 или по­зи­цию 26. Ваня умень­ша­ет ко­ли­че­ство кам­ней в два раза и вы­иг­ры­ва­ет своим пер­вым ходом.

 

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

def f(x,k,v):

if x <= 19:

return k in v

if k >= max(v):

return 0

h = [f(x-5,k+1,v)]

if x % 2 ==0:

h.append(f(x//2,k+1,v))

if x % 3 ==0:

h.append(f(x//3,k+1,v))

else:

h.append(f(x+1,k+1,v))

if k%2 != max(v) % 2:

return any(h)

else:

return all(h)

for x in range (19,10000):

if f(x,0,[2]) == 1:

print('За­да­ча 19:',x)

break

 

Ответ: 25.


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