Решение задания 23 в электронных таблицах (ЭТ) избавит нас от необходимости ручного подсчета количества программ и позволит автоматизировать вычисления (собственно говоря, для этого и предназначены электронные таблицы).
Для успешного решения задания необходимы следующие навыки работы в ЭТ:
- Внесение чисел в ячейки
- Вставка формул
- Знание адресации в ссылках
Как видим, ничего сложного.
Рассмотрим те же примеры заданий, которые показаны в предыдущей теории по решению деревом.
Задание 1
У исполнителя Утроитель две команды, которым присвоены номера:
1. прибавь 1
2. умножь на 3
Сколько есть программ, которые число 1 преобразуют в число 20?
Сделаем заготовку. В столбце А поставим числа от 1 до 20 и выделим желтым цветом те числа, которые делятся на 3.
Решать такое задание удобнее “с конца”, т.е. мы будем вносить формулы для чисел от 20 до 2, именно в таком порядке. Те числа, которые делятся на 3, можно получить двумя способами: прибавить 1 к предыдущему числу или же умножить на 3 число, которое в 3 раза меньше. Числа, которые не делятся на 3, можно получить только командой +1.
Если число n НЕ делится на 3, количество программ для него
kn = kn-1
Если же число делится на 3, то
kn = kn-1 + kn / 3
Например, для n = 20: k20 = k19
А для n = 18: k18 = k17 + k6
Мы получили рекуррентные соотношения (т.е. формулы, которые зависят от значения функции в других точках), которые мы сейчас будем использовать в ЭТ.
Для тех ячеек, в которых содержатся числа, не делящиеся на 3, мы будем в формуле писать значение предыдущей ячейки. В ячейке В20, в которой мы считаем количество программ для 20, мы напишем формулу =B19, поскольку 20 не делится на 3. А это мы сделаем для всех ячеек, которые мы не выделили желтым цветом.
Теперь внесем формулы в “желтые” ячейки. В них у нас будет сумма двух ячеек: предыдущей и ячейки / 3
Например, для В18 мы напишем = В17 + В6 (предыдущая и деленная на 3)
В режиме отображения значений
Поскольку нам надо попасть в число 20, ответ получен в ячейке В20, выделен зеленым цветом.
Задание 2
Исполнитель Июнь15 преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1
2. Умножить на 2
Первая команда увеличивает число на экране на 1, вторая умножает его на 2. Программа для исполнителя Июнь15 – это последовательность команд. Сколько существует программ, для которых при исходном числе 2 результатом является число 40 и при этом траектория вычислений содержит число 20 и не содержит число 8?
Для учета попадания в 20 мы так же как в ручном решении разобьем на две части таблицу. Чтобы не забыть что в 8 нельзя, выделим его красным цветом, а желтым цветом выделим четные числа, поскольку только в них можно попасть умножением на 2.
Вообще, конечно, выделение цветом не обязательно, но оно позволяет проверить, все ли вы сделали.
Главное – не написать формулу в красную ячейку. Мы можем ссылаться на нее из других ячеек (я сделал это в ячейках В8 и В15), но, поскольку в ней пусто, она не даст нам чисел в количество программ.
Для 20 -> 40 мы делаем тот же вывод что при ручном решении, что там всего два способа. Итоговый вид таблицы
Я рассматриваю решение через электронные таблицы не как альтернативу ручному решению, а как способ проверить свой ответ. Если вы сначала решаете вручную, будет проще понять какие шаги нужны, как разбить решение и какие ограничения есть у чисел.