СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
Информатика
Cайты, меню, вход, новости


Задания
Версия для печати и копирования в MS Word
Задание 22 № 3623

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

 

1. прибавь 3,

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

 

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

Программа для Калькулятора — это последовательность команд.

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

Решение.

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

Обе команды исполнителя увеличивают исходное число, поэтому общее количество команд в программе не может превосходить (93- 3) / 3= 31.

 

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

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

 

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

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

При n = 9 R(n)) = 1 (один способ: прибавлением тройки).

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

Имеем:

R(3)=1=R(6)

R(9) = 2 = R(12) = R(15),

R(18) = R(6)+R(9)=1+2=3= R(21)=R(24),

R(27) = R(9) + R(18) =2 + 3 = 5 = R(30) = R(33),

R(36) = R(12) + R(27) =2 + 5 = 7= R(39) = R(42),

R(45) = R(15) + R(36) =2 + 7 = 9= R(48) = R(51),

R(54) = R(18) + R(45) =3 + 9 =12= R(57) = R(60),

R(63) = R(21) + R(54) =3 + 12 =15= R(66) = R(69),

R(72) = R(24) + R(63) =3 + 15 =18= R(75) = R(78),

R(81) = R(27) + R(72) =5 + 18 =23= R(84) = R(87),

R(90) = R(30) + R(81) =5 + 23 =28= R(93).

 

Ответ: 28.

 

Другая форма решения.

Будем решать поставленную задачу последовательно для чисел 3, 6, 9,..., 93 (то есть для каждого из чисел определим, сколько программ исполнителя существует для его получения). Заметим, что мы можем получить только числа кратные 3. Количество программ, которые преобразуют число 6 в число n, будем обозначать через R(n). Число 3 у нас уже есть, значит, его можно получить с помощью «пустой» программы. Любая непустая программа увеличит исходное число, т. е. даст число, больше 3. Значит, R(3) = 1. Для каждого следующего числа рассмотрим, из какого числа оно может быть получено за одну команду исполнителя. Если число не делится на девять, то оно может быть получено только из предыдущего с помощью команды прибавь 3. Значит, количество искомых программ для такого числа равно количеству программ для предыдущего возможного числа:

Если число на 3 делится, то вариантов последней команды два: прибавь 3 и умножь на 3, тогда . Заполним соответствующую таблицу по приведёным формулам слева направо:

 

369121518212427303336394245
112223335557779
485154576063666972757881848790
9912121215151518181823232328
93
28

При этом ячейки, относящиеся к числам, которые не делятся на 9, можно в решении и опустить (за исключением первого и последнего чисел):

 

3918273645546372819093
123579121518232828

 

Ответ: 28.