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

Ис­пол­ни­тель Б22 пре­об­ра­зу­ет целое число, за­пи­сан­ное на экра­не.

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

        1. При­бавь 1

        2. При­бавь 2

        3. При­бавь преды­ду­щее

Пер­вая ко­ман­да уве­ли­чи­ва­ет число на экра­не на 1, вто­рая уве­ли­чи­ва­ет это число на 2, тре­тья при­бав­ля­ет к числу на экра­не число, мень­шее на 1 (к числу 3 при­бав­ля­ет­ся 2, к числу 11 при­бав­ля­ет­ся 10 и т. д.). Про­грам­ма для ис­пол­ни­те­ля Б22 – это по­сле­до­ва­тель­ность ко­манд.

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

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

Ре­ше­ние.

Пусть R(x)  — ко­ли­че­ство про­грамм, ко­то­ры­ми можно из 3 по­лу­чить x.

За­ме­тим, что чётное число нель­зя по­лу­чить с ис­поль­зо­ва­ни­ем ко­ман­ды 3, по­сколь­ку в её про­цес­се скла­ды­ва­ет­ся чётное и нечётное число. Также за­ме­тим, что для того, чтобы по­лу­чить x с по­мо­щью ко­ман­ды 3, нужно при­ме­нять её к числу  дробь: чис­ли­тель: x плюс 1, зна­ме­на­тель: 2 конец дроби .

Вы­чис­лим по­сле­до­ва­тель­но зна­че­ние R:

R(0) = 0

R(1) = 0

R(2) = 0

R(3) = 1

R(4) = R(3) + R(2) = 1 + 0 = 1

R(5) = R(4) + R(3) + R(3) = 1 + 1 + 1 = 3

R(6) = R(5) + R(4) = 3 + 1 = 4

R(7) = R(6) + R(5) + R(4) = 4 + 3 + 1 = 8

R(8) = R(7) + R(6) = 8 + 4 = 12

R(9) = R(8) + R(7) + R(5) = 12 + 8 + 3 = 23

R(10) = R(9) + R(8) = 23 + 12 = 35

 

Ответ: 35.

 

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

def f(x, y):

if x > y:

return 0

if x == y:

return 1

else:

return f(x + 1, y) + f(x + 2, y) + f(2 * x - 1, y)

print(f(3, 10))


Аналоги к заданию № 9206: 7933 7998 9314 Все

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