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

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

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

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

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

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

Ре­ше­ние.

За­ме­тим, что игра долж­на за­кон­чить­ся в 2 хода. Ми­ни­маль­ное зна­че­ние ко­ли­че­ства кам­ней в обеих кучах, при ко­то­ром игра за­кан­чи­ва­ет­ся,  — 59. Чтобы Ваня мог вы­иг­рать своим пер­вым ходом, ко­ли­че­ство кам­ней во вто­рой куче долж­но быть ≥27. По­сколь­ку удва­и­ва­ни­ем число 27 по­лу­чить нель­зя, после пер­во­го хода Пети во вто­рой куче долж­но по­лу­чить­ся 28 кам­ней. Это воз­мож­но при зна­че­нии S  =  14. При таком ми­ни­маль­ном зна­че­нии S Ваня вы­иг­ра­ет своим пер­вым ходом после не­удач­но­го хода Пети.

 

Ответ:14.

 

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

def f(x, y, h):

if h == 3 and x + y >= 59:

return 1

elif h == 3 and x + y < 59:

return 0

elif x + y >= 59 and h < 3:

return 0

else:

if h % 2 == 0:

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

else:

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

for x in range(1, 54):

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

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

break

Источник: ЕГЭ по ин­фор­ма­ти­ке 09.04.2024. До­сроч­ная волна
1
Тип 20 № 68521
i

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

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

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

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


2
Тип 21 № 68522
i

Для игры, опи­сан­ной в за­да­нии 19, най­ди­те ми­ни­маль­ное зна­че­ние S, при ко­то­ром од­но­вре­мен­но вы­пол­ня­ют­ся два

усло­вия:

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

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

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