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

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

На­при­мер, если в куче 12 кам­ней, то за один ход можно до­ба­вить 1 (12/12), 2 (12/6), 3 (12/4), 4 (12/3) или 6 (12/2) кам­ней.

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

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

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

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

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

Ре­ше­ние.

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

from functools import lru_cache

def f(n):

cisla = []

for k in range(2, n + 1):

if n % k == 0:

cisla.append(n + n // k)

return cisla

@lru_cache

def game(n):

if any(x > 45 for x in f(n)):

return 'vic'

if all (game(x)=='vic' for x in f(n)):

return 'loss1'

if any (game(x)=='loss1' for x in f(n)):

return 'vic2'

if all (game(x)=='vic' or game(x) == 'vic2' for x in f(n)):

return 'loss2'

 

z_19 = []

z_20 = []

z_21 = []

 

for n in range(2,46):

if game(n) =='loss1':

z_19.append(n)

if game(n) =='vic2':

z_20.append(n)

if game(n) =='loss2':

z_21.append(n)

 

print(len(z_19))

print(min(z_20), max(z_20))

print(min(z_21))

 

Ответ: 6.

 

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

def f(x, z):

if x > 45: return z%2==0

if z == 0: return 0

h = [f(x + x//i, z-1) for i in range(2, x+1) if x % i == 0]

if (z-1)%2==0:

return any(h)

return all(h)

print(19, len([s for s in range(2, 45) if f(s, 2)]))

print(20, [s for s in range(1, 45) if (not f(s, 1)) and f(s, 3)])

print(21, [s for s in range(1, 45) if ((f(s, 2)) or f(s, 4)) and (not f(s, 2))])


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

1
Тип 20 № 68253
i

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

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

 

Ответ:


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


2
Тип 21 № 68254
i

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


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