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

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

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

В на­чаль­ный мо­мент в куче было S кам­ней; 1 ≤ S ≤ 68.

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

Най­ди­те зна­че­ние S, при ко­то­ром од­но­вре­мен­но вы­пол­ня­ют­ся два усло­вия:

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

—  У Вани нет стра­те­гии, ко­то­рая поз­во­ля­ет ему га­ран­ти­ро­ван­но вы­иг­рать пер­вым ходом.

Если най­де­но не­сколь­ко зна­че­ний S, в от­ве­те за­пи­ши­те наи­мень­шее из них.

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

Ре­ше­ние.

Ми­ни­маль­ное зна­че­ние: S  =  32. Петя может по­лу­чить по­зи­цию 33 или 64.

При S  =  33 Ваня де­ла­ет по­зи­цию 34, Петя может по­лу­чить по­зи­ции 35 или 68. Во всех слу­ча­ях Ваня уве­ли­чи­ва­ет ко­ли­че­ство кам­ней в куче в 2 раза и вы­иг­ры­ва­ет вто­рым ходом.

При S  =  64 Ваня уве­ли­чи­ва­ет ко­ли­че­ство кам­ней в куче в 2 раза и вы­иг­ры­ва­ет пер­вым ходом.

 

Ответ: 32.

 

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

#Ис­клю­чим стра­те­гию Вани, ко­то­рая поз­во­лит ему га­ран­ти­ро­ван­но вы­иг­рать пер­вым ходом:

def f(x, h):

if (h == 3 or h == 5) and x >= 69:

return 1

elif h == 5 and x < 69:

return 0

elif x >= 69 and h < 5:

return 0

else:

if h % 2 == 0:

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

else:

return f(x + 1, h + 1) and f(x * 2, h + 1) # стра­те­гия про­иг­рав­ше­го

def f1(x, h):

if h == 3 and x >= 69:

return 1

elif h == 3 and x < 69:

return 0

elif x >= 69 and h < 3:

return 0

else:

if h % 2 == 0:

return f1(x + 1, h + 1) or f1(x * 2, h + 1) # стра­те­гия по­бе­ди­те­ля

else:

return f1(x + 1, h + 1) and f1(x * 2, h + 1) # стра­те­гия про­иг­рав­ше­го(любой ход)

for x in range(1, 69):

if f(x, 1) == 1:

print(x)

print("====")

for x in range(1, 69):

if f1(x, 1) == 1:

print(x) # Ис­клю­чим эти зна­че­ния из спис­ка выше


Аналоги к заданию № 38599: 47225 70082 79734 Все

Источник: ЕГЭ—2024. Ос­нов­ная волна 08.06.2024. Даль­ний Во­сток
1
Тип 20 № 70081
i

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

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

В на­чаль­ный мо­мент в куче было S кам­ней; 1 ≤ S ≤ 68.

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

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

—  Петя не может вы­иг­рать за один ход;

—  Петя может вы­иг­рать своим вто­рым ходом не­за­ви­си­мо от того, как будет ходит Ваня.

Най­ден­ные зна­че­ния за­пи­ши­те в от­ве­те в по­ряд­ке воз­рас­та­ния.


Аналоги к заданию № 38598: 47224 70081 79733 Все