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

У ис­пол­ни­те­ля Утро­и­тель две ко­ман­ды, ко­то­рым при­сво­е­ны но­ме­ра:

1) при­бавь 1,

2) умножь на 3.

Пер­вая из них уве­ли­чи­ва­ет число на экра­не на 1, вто­рая утра­и­ва­ет его.

Про­грам­ма для Утро­и­те­ля – это по­сле­до­ва­тель­ность ко­манд.

Сколь­ко су­ще­ству­ет про­грамм, ко­то­рые число 2 пре­об­ра­зу­ют в число 32?

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

Ре­ше­ние.

Обо­зна­чим R(n)  — ко­ли­че­ство про­грамм, ко­то­рые пре­об­ра­зу­ют число 3 в число n. Обо­зна­чим t(n) наи­боль­шее крат­ное 3, не пре­вос­хо­дя­щее n.

Обе ко­ман­ды ис­пол­ни­те­ля уве­ли­чи­ва­ют ис­ход­ное число, по­это­му общее ко­ли­че­ство ко­манд в про­грам­ме не может пре­вос­хо­дить 30.

 

Верны сле­ду­ю­щие со­от­но­ше­ния:

1.  Если n не де­лит­ся на 3, то тогда R(n) = R(t(n)), так как су­ще­ству­ет един­ствен­ный спо­соб по­лу­че­ния n из t(n)  — при­бав­ле­ни­ем еди­ниц.

 

2.  Пусть n де­лит­ся на 3.

Тогда R(n) = R(n / 3) + R(n - 1)= R(n / 3) + R(n - 3) (если n > 3).

При n = 6 R(n)) = 2 (два спо­со­ба: утро­е­ни­ем двой­ки или при­бав­ле­ни­ем еди­ниц).

По­это­му до­ста­точ­но по­сте­пен­но вы­чис­лить зна­че­ния R(n) для всех чисел, крат­ных 3 и не пре­вос­хо­дя­щих 32: сна­ча­ла вы­чис­ля­ем R(3), затем R(6), R(9) и т. д.

Имеем:

R(2) = R(3) = R(4) = R(5) = 1,

R(6) = R(5) + R(2) = 1 + 1 = 2 = R(7) = R(8),

R(9) = R(3) + R(6) = 1 + 2 = 3 = R(10) = R(11),

R(12) = R(4)+ R(9)= 1 + 3 = 4 = R(13) = R(14),

R(15) = R(5) + R(12) = 1 + 4 = 5 = R(16) = R(17),

R(18) = R(6) + R(15) = 2 + 5 = 7 = R(19) = R(20),

R(21) = R(7) + R(18) = 2 + 7 = 9 = R(22) = R(23),

R(24) = R(8) + R(21) = 2 + 9 = 11 = R(25) = R(26),

R(27) = R(9) + R(24) = 3 + 11 = 14 = R(28) = R(29),

R(30) = R(10) + R(27) = 3 + 14 = 17 = R(31) = R(32).

 

Ответ: 17.

 

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

def f(x, y):

if x > y:

return 0

if x == y:

return 1

else:

return f(x + 1, y) + f(x * 3, y)

print(f(2, 32))

Раздел кодификатора ФИПИ: 1.6.2 Вы­чис­ли­мость. Эк­ви­ва­лент­ность ал­го­рит­ми­че­ских мо­де­лей