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

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

—  убрать из кучи один ка­мень;

—  если ко­ли­че­ство кам­ней в куче чётно, убрать по­ло­ви­ну име­ю­ще­го­ся ко­ли­че­ства;

—  если ко­ли­че­ство кам­ней в куче крат­но трём, убрать треть име­ю­ще­го­ся ко­ли­че­ства.

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

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

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

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

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

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

Ре­ше­ние.

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

 

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

def f(x,k,v):

if x<10:

return k in v

if k >= max(v):

return 0

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

if x % 2 ==0:

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

if x % 3 ==0:

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

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

return any(h)

else:

return all(h)

 

for x in range (10000,10+1,-1):

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

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

break

 

Ответ: 19.

 

При­ведём ре­ше­ние На­хме­то­ва Сар­ха­на на языке Python.

def game(pile, mov):

if mov == 3 and pile < 10:

return 1

elif mov == 3 and pile >= 10:

return 0

elif mov < 3 and pile < 10:

return 0

else:

if mov % 2 == 0:

if pile % 2 == 0 and pile % 3 == 0:

return game(pile - 1, mov + 1) or game(pile / 2, mov + 1) or game(pile * (2 / 3), mov + 1)

elif pile % 2 == 0:

return game(pile - 1, mov + 1) or game(pile / 2, mov + 1)

elif pile % 3 == 0:

return game(pile - 1, mov + 1) or game(pile * (2 / 3), mov + 1)

else:

return game(pile - 1, mov + 1)

else:

if pile % 2 == 0 and pile % 3 == 0:

return game(pile - 1, mov + 1) and game(pile / 2, mov + 1) and game(pile * (2 / 3), mov + 1)

elif pile % 2 == 0:

return game(pile - 1, mov + 1) and game(pile / 2, mov + 1)

elif pile % 3 == 0:

return game(pile - 1, mov + 1) and game(pile * (2 / 3), mov + 1)

else:

return game(pile - 1, mov + 1)

 

k = 0

for pile in range(100, 9, -1):

if game(pile, 1) == 1:

print(pile)

break

for j in range (0,len(a)):

if a[j]%2==0:

suma2+=a[j]

k2+=1

else:

suma1+=a[j]

k1+=1

if k2>k1 and suma2 k += 1

print(k)

 


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

1
Тип 20 № 64905
i

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

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

 

Ответ:


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


2
Тип 21 № 64906
i

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


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