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

Два иг­ро­ка, Петя и Ваня, иг­ра­ют в сле­ду­ю­щую игру. Перед иг­ро­ка­ми лежат две кучи кам­ней. Иг­ро­ки ходят по оче­ре­ди, пер­вый ход де­ла­ет Петя. За один ход игрок может до­ба­вить в одну из куч (по сво­е­му вы­бо­ру) 5 кам­ней либо 19 кам­ней. На­при­мер, пусть в одной куче 10 кам­ней, а в дру­гой 7 кам­ней; такую по­зи­цию в игре будем обо­зна­чать (10, 7). Тогда за один ход можно по­лу­чить любую из четырёх по­зи­ций: (15, 7), (29, 7), (10, 12), (10, 26). Для того чтобы де­лать ходы, у каж­до­го иг­ро­ка есть не­огра­ни­чен­ное ко­ли­че­ство кам­ней.

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

В на­чаль­ный мо­мент в пер­вой куче было 5 кам­ней, во вто­рой куче  — S кам­ней; 1 ≤ S ≤ 89.

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

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

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

Ре­ше­ние.

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

def f(x, y, h):

if h == 3 and x * y >= 450:

return 1

elif h == 3 and x * y < 450:

return 0

elif x * y >= 450 and h < 3:

return 0

else:

if h % 2 == 0:

return f(x + 5, y, h + 1) or f(x, y + 5, h + 1) or f(x + 19, y, h + 1) or f(x, y + 19, h + 1) # стра­те­гия по­бе­ди­те­ля

else:

return f(x + 5, y, h + 1) or f(x, y + 5, h + 1) or f(x + 19, y, h + 1) or f(x, y + 19, h + 1) # стра­те­гия про­иг­рав­ше­го(не­удач­ный ход)

count = 0

for x in range(1, 1000):

if f(x, 5, 1) == 1:

count += 1

print("За­да­ча 19:", count)

 

 

Ответ: 84.


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