У исполнителя Делитель две команды, которым присвоены номера:
1. раздели на 2
2. вычти 3
Первая из них уменьшает число на экране в 2 раза, вторая уменьшает его на 3. Исполнитель работает только с натуральными числами. Составьте алгоритм получения из чиcла 76 числа 5, содержащий не более 5 команд. В ответе запишите только номера команд.
(Например, 21211– это алгоритм:
вычти 3
раздели на 2
вычти 3
раздели на 2
раздели на 2,
который преобразует число 33 в 3.)
Если таких алгоритмов более одного, то запишите любой из них.
Решение.
Поскольку Делитель работает только с натуральными числами и число 76 — четное, первая команда может быть 1, при этом получится число 38. Оно тоже четное, тогда вторая команда тоже может быть 1, получится число 19, из которого число 5 можно получить последовательностью команд 212. Следовательно, из числа 76 число 5 можно получить последовательностью команд 11212.
Ответ:11212.
Приведем другое решение на языке Python.
Просмотр содержимого документа
«Разбор задания ОГЭ по информатике. Январь 2025. Простой линейный алгоритм для формального исполнителя. Получение меньшего числа из большего»
Тип 5 № 18274
У исполнителя Делитель две команды, которым присвоены номера:
1. раздели на 2
2. вычти 3
Первая из них уменьшает число на экране в 2 раза, вторая уменьшает его на 3. Исполнитель работает только с натуральными числами. Составьте алгоритм получения из чиcла 76 числа 5, содержащий не более 5 команд. В ответе запишите только номера команд.
(Например, 21211– это алгоритм:
вычти 3
раздели на 2
вычти 3
раздели на 2
раздели на 2,
который преобразует число 33 в 3.)
Если таких алгоритмов более одного, то запишите любой из них.
Решение.
Поскольку Делитель работает только с натуральными числами и число 76 — четное, первая команда может быть 1, при этом получится число 38. Оно тоже четное, тогда вторая команда тоже может быть 1, получится число 19, из которого число 5 можно получить последовательностью команд 212. Следовательно, из числа 76 число 5 можно получить последовательностью команд 11212.
Ответ:11212.
Приведем другое решение на языке Python.
def f(flag, x): if flag == 1: return x / 2 if flag == 2: return x - 3 x = 76 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))))) == 5: print(flag4, flag3, flag2, flag1, flag)