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

Два иг­ро­ка, Петя и Ваня, иг­ра­ют в сле­ду­ю­щую игру. Перед иг­ро­ка­ми лежат две кучи кам­ней. Иг­ро­ки ходят по оче­ре­ди, пер­вый ход де­ла­ет Петя. За один ход игрок может до­ба­вить в мень­шую кучу один ка­мень, до­ба­вить два камня или уве­ли­чить ко­ли­че­ство кам­ней в куче в два раза. Из­ме­нять ко­ли­че­ство кам­ней в боль­шей куче не раз­ре­ша­ет­ся. Пусть, на­при­мер, в на­ча­ле игры в пер­вой куче 5 кам­ней, а во вто­рой  — 8 кам­ней, будем обо­зна­чать такую по­зи­цию (5, 8). Петя пер­вым ходом дол­жен до­бав­лять камни в первую кучу, он может по­лу­чить по­зи­ции (6, 8), (7, 8) и (10, 8). Если Петя по­лу­ча­ет по­зи­ции (6, 8) и (7, 8), Ваня сле­ду­ю­щим ходом тоже дол­жен до­бав­лять камни в первую кучу, а если Петя по­лу­ча­ет по­зи­цию (10, 8), Ваня дол­жен до­бав­лять камни во вто­рую кучу, так как те­перь она стала мень­шей.

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

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

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

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

В от­ве­те за­пи­ши­те сна­ча­ла ми­ни­маль­ное зна­че­ние, затем мак­си­маль­ное.

 

Ответ:

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

Ре­ше­ние.

Рас­смот­рим зна­че­ние S  =  31. Своим пер­вым ходом Петя может по­лу­чить по­зи­ции (13, 31), (14, 31) и (24, 31). К по­бе­де Петю при­во­дит по­зи­ция (24, 31). Сколь­ко бы кам­ней не до­ба­вил Ваня, он не смо­жет по­лу­чить более 80 кам­ней сум­мар­но, и Петя вы­иг­ры­ва­ет на своем вто­ром ходе. При осталь­ных по­зи­ци­ях Петя не смо­жет вы­иг­рать у Вани своим вто­рым ходом.

Вто­рое зна­че­ние S  — 54. Своим пер­вым ходом Петя может по­лу­чить по­зи­ции (13, 54), (14, 54) и (24, 54). К по­бе­де Петю при­во­дит по­зи­ция (13, 54). Сколь­ко бы кам­ней не до­ба­вил Ваня, он не смо­жет по­лу­чить более 80 кам­ней сум­мар­но, и Петя вы­иг­ры­ва­ет на своем вто­ром ходе. При осталь­ных по­зи­ци­ях Петя не смо­жет вы­иг­рать у Вани.

 

Ответ: 31  54.

 

При­ве­дем ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python.

def move(n,lim,s):

# n - номер хода, lim - огра­ни­че­ние на число ходов, s - числа кам­ней в кучах (кор­теж)

# Ре­зуль­тат: 1 - вы­иг­рал пер­вый игрок, 2 - вто­рой, 0 - по­бе­ди­те­ля нет

player = 2 - n%2# Те­ку­щий игрок

rival = 3-player# Про­тив­ник

if sum(s) > 80:# Игра уже окон­че­на

return rival# Вы­иг­рал сде­лав­ший преды­ду­щий ход

if n > lim:# Пре­вы­шен лимит ходов

return 0# По­бе­ди­тель не опре­де­лен

s1,s2 = s# Рас­па­ков­ка по­зи­ции

pos = [(s1+1,s2),(s1+2,s2),(s1*2,s2)] if s1 < s2 else [(s1,s2+1),(s1,s2+2),(s1,s2*2)]

res = [move(n+1,lim,x) for x in pos]# Ре­зуль­та­ты ходов

if any([x == player for x in res]): # Есть вы­иг­рыш­ный ход

return player

if all([x == rival for x in res]):# Все ходы про­иг­рыш­ные

return rival

return 0# По­бе­ди­тель не опре­де­лен

print('#19:',*[s for s in range(1,69) if move(1,2,(12,s)) == 2])

print('#20:',*[s for s in range(1,69) if move(1,1,(12,s)) == 0 and move(1,3,(12,s)) == 1])

print('#21:',*[s for s in range(1,69) if move(1,2,(12,s)) == 0 and move(1,4,(12,s)) == 2])

 

При­ве­дем ре­ше­ние Ми­ха­и­ла Глин­ско­го на языке Python.

def F(a,b,n):

if n == 3 and a+b > 80: return 1

if n == 3 and a+b <= 80: return 0

if n <3 and a+b > 80: return 0

else:

if n%2==0:

if a < b: return F(a+1,b,n+1) or F(a+2,b,n+1) or F(a*2,b,n+1)

else: return F(a,b+1,n+1) or F(a,b+2,n+1) or F(a,b*2,n+1)

if n%2==1:

if a < b: return F(a+1,b,n+1) and F(a+2,b,n+1) and F(a*2,b,n+1)

else: return F(a,b+1,n+1) and F(a,b+2,n+1) and F(a,b*2,n+1)

m=[]

for s in range(1,69):

if F(12,s,0):

m.append(s)

print(min(m),max(m))


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

1
Тип 19 № 51988
i

Два иг­ро­ка, Петя и Ваня, иг­ра­ют в сле­ду­ю­щую игру. Перед иг­ро­ка­ми лежат две кучи кам­ней. Иг­ро­ки ходят по оче­ре­ди, пер­вый ход де­ла­ет Петя. За один ход игрок может до­ба­вить в мень­шую кучу один ка­мень, до­ба­вить два камня или уве­ли­чить ко­ли­че­ство кам­ней в куче в два раза. Из­ме­нять ко­ли­че­ство кам­ней в боль­шей куче не раз­ре­ша­ет­ся. Пусть, на­при­мер, в на­ча­ле игры в пер­вой куче 5 кам­ней, а во вто­рой  — 8 кам­ней, будем обо­зна­чать такую по­зи­цию (5, 8). Петя пер­вым ходом дол­жен до­бав­лять камни в первую кучу, он может по­лу­чить по­зи­ции (6, 8), (7, 8) и (10, 8). Если Петя по­лу­ча­ет по­зи­ции (6, 8) и (7, 8), Ваня сле­ду­ю­щим ходом тоже дол­жен до­бав­лять камни в первую кучу, а если Петя по­лу­ча­ет по­зи­цию (10, 8), Ваня дол­жен до­бав­лять камни во вто­рую кучу, так как те­перь она стала мень­шей.

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

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

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

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


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


2
Тип 21 № 51990
i

Два иг­ро­ка, Петя и Ваня, иг­ра­ют в сле­ду­ю­щую игру. Перед иг­ро­ка­ми лежат две кучи кам­ней. Иг­ро­ки ходят по оче­ре­ди, пер­вый ход де­ла­ет Петя. За один ход игрок может до­ба­вить в мень­шую кучу один ка­мень, до­ба­вить два камня или уве­ли­чить ко­ли­че­ство кам­ней в куче в два раза. Из­ме­нять ко­ли­че­ство кам­ней в боль­шей куче не раз­ре­ша­ет­ся. Пусть, на­при­мер, в на­ча­ле игры в пер­вой куче 5 кам­ней, а во вто­рой  — 8 кам­ней, будем обо­зна­чать такую по­зи­цию (5, 8). Петя пер­вым ходом дол­жен до­бав­лять камни в первую кучу, он может по­лу­чить по­зи­ции (6, 8), (7, 8) и (10, 8). Если Петя по­лу­ча­ет по­зи­ции (6, 8) и (7, 8), Ваня сле­ду­ю­щим ходом тоже дол­жен до­бав­лять камни в первую кучу, а если Петя по­лу­ча­ет по­зи­цию (10, 8), Ваня дол­жен до­бав­лять камни во вто­рую кучу, так как те­перь она стала мень­шей.

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

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

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

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


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