Задание №5 — Алгоритмы и программирование
У исполнителя Квадратор две команды, которым присвоены номера:
1. прибавь 1
2. возведи в квадрат
Первая из них увеличивает число на экране на 1, вторая возводит его во вторую степень.
Исполнитель работает только с натуральными числами.
Составьте алгоритм получения из числа 1 числа 100, содержащий не более
5 команд. В ответе запишите только номера команд.
(Например, 12121 это алгоритм:
прибавь 1
возведи в квадрат
прибавь 1
возведи в квадрат
прибавь 1,
который преобразует число 1 в 26.)
Если таких алгоритмов более одного, то запишите любой из них.
Правильный ответ
11212
Пояснение
Решение.
Нам необходимо составить алгоритм для исполнителя «Квадратор», который превращает число в число ровно за шагов. У нас есть две команды:
1. прибавь
2. возведи в квадрат
Для решения таких задач удобнее всего двигаться «с конца» — от итогового числа к исходному числу . При этом команды будут заменяться на обратные:
1. вместо «прибавь » будем выполнять «вычти »;
2. вместо «возведи в квадрат» будем выполнять «извлеки квадратный корень».
Шаг 1. Посмотрим на число . Из него можно извлечь квадратный корень: . Это соответствует команде №2 (в прямом порядке).
Если бы мы вычитали , мы бы получили , из которого корень не извлекается, и нам пришлось бы долго вычитать единицы, что не уложится в лимит команд.
Шаг 2. Теперь у нас число . Из него нельзя извлечь целый корень, поэтому единственный путь — вычесть :
. Это соответствует команде №1.
Шаг 3. Из числа можно извлечь квадратный корень: . Это соответствует команде №2.
Шаг 4. Из числа нельзя извлечь целый корень, вычитаем :
. Это соответствует команде №1.
Шаг 5. Из числа вычитаем :
. Мы пришли к исходному числу. Это соответствует команде №1.
Теперь запишем полученные команды в обратном порядке (от числа к числу ):
1. Число , команда 1:
2. Число , команда 1:
3. Число , команда 2:
4. Число , команда 1:
5. Число , команда 2:
Последовательность команд: .
Ответ: 11212
Источник: ФИПИ