Тип 5 № 18035
У исполнителя Квадратор две команды, которым присвоены номера:
1. прибавь 1
2. возведи в квадрат
Первая из них увеличивает число на экране на 1, вторая возводит его во вторую степень.
Составьте алгоритм получения из числа 3 числа 84, содержащий не более 5 команд. В ответе запишите только номера команд.
(Например, 11221 — это алгоритм:
прибавь 1
прибавь 1
возведи в квадрат
возведи в квадрат
прибавь 1,
который преобразует число 1 в 82.)
Если таких алгоритмов более одного, то запишите любой из них.
Решение.
Не любое число является квадратом целого числа, поэтому, если мы пойдем от числа 84 к числу 3, тогда однозначно восстановим программу. Полученные команды будут записываться справа налево.
1. Число 84 не является квадратом, поэтому оно получено добавлением единицы к числу 83: 84 = 83 + 1 (команда 1).
2. Число 83 не является квадратом, поэтому оно получено добавлением единицы к числу 82: 83 = 82 + 1 (команда 1).
3. Число 82 не является квадратом, поэтому оно получено добавлением единицы к числу 81: 82 = 81 + 1 (команда 1).
4. Число 81 является квадратом числа 9: 81 = 9 · 9 (команда 2).
5. Число 9 является квадратом числа 3: 9 = 3 · 3 (команда 2).
Искомая последовательность команд: 22111.
Ответ: 22111.
Приведем другое решение на языке Python.
def f(flag, x): if flag == 1: return x + 1 if flag == 2: return x**2 x = 3 for flag in range(1, 3): for flag1 in range(1, 3): for flag2 in range(1, 3): for flag3 in range(1, 3): for flag4 in range(1, 3): if f(flag, f(flag1, f(flag2, f(flag3, f(flag4, x))))) == 84: print(flag4, flag3, flag2, flag1, flag)
Источник: ОГЭ по информатике 2020. Досрочная волна. Вариант 2