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

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

У ис­пол­ни­те­ля есть три ко­ман­ды, ко­то­рые обо­зна­че­ны бук­ва­ми.

A.  Вы­честь 1.

B.  Раз­де­лить на 2.

С.  Раз­де­лить на 3.

Ко­ман­да B может быть ис­пол­не­на толь­ко для чётного числа, ко­ман­да C  — толь­ко для числа, крат­но­го 3.

Про­грам­ма для ис­пол­ни­те­ля  — это по­сле­до­ва­тель­ность ко­манд. Тра­ек­то­рия вы­чис­ле­ний про­грам­мы  — это по­сле­до­ва­тель­ность ре­зуль­та­тов вы­пол­не­ния всех ко­манд про­грам­мы.

На­при­мер, для про­грам­мы BAС при ис­ход­ном числе 20 тра­ек­то­рия вы­чис­ле­ний со­дер­жит числа 10, 9, 3.

Сколь­ко су­ще­ству­ет про­грамм, ко­то­рые пре­об­ра­зу­ют ис­ход­ное число 19 в число 1 и при этом тра­ек­то­рия вы­чис­ле­ний не со­дер­жит чисел 12 и 15?

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

Ре­ше­ние.

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

def f(x, y):

if x < y or x == 12 or x == 15:

return 0

if x == y:

return 1

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

return f(x - 1, y) + f(x // 2, y) + f(x // 3, y)

if x%2==0 and x%3!=0 :

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

if x%3==0 and x%2!=0:

return f(x - 1, y) + f(x // 3, y)

if x%2!=0 and x%3!=0:

return f(x - 1, y)

print(f(19, 1))

 

Ответ: 43.

 

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

def F(a, b):

if a <= b or a == 15 or a == 12:

return a == b

summa = 0

summa += F(a-1, b)

if a % 2 == 0:

summa += F(a//2, b)

if a % 3 == 0:

summa += F(a//3, b)

return summa

print(F(19, 1))


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