Решаем задачи B14 (об исполнителе) Методику решения этих задач предложили О.Б. Богомолова, д. п. н., преподаватель МГГУ им. М.А. Шолохова и Д.Ю. Усенков, ст. н. с. Института информатизации образования Российской академии образования в журнале Информатика (приложение к журналу «1 сентября») июль - август 2013 Типовое условие: “У некоторого исполнителя — две команды, обозначенные номерами 1 и 2 и реализующие некоторые математические действия («прибавить число», «умножить на число» и т.д.). Требуется составить алгоритм, позволяющий получить из одного числа другое и состоящий не более чем из пяти команд. Ответом является записанная без разделителей (запятых, пробелов и пр.) последовательность номеров команд. Пример 1: У исполнителя Утроитель две команды, которым присвоены номера: 1. вычти один 2. умножь на три Первая из них уменьшает число на экране на 1, вторая – утраивает его. Запишите порядок команд в алгоритме получения из числа 5 числа 26, содержащем не более 5 команд, указывая лишь номера команд. Если таких алгоритмов более одного, то запишите любой из них. Решим эту задачу методом «от противного». Найдем алгоритм получения из числа 26 (конечного) числа 5 (исходного) за не более чем пять действий, обратных к заданным (т.е. в нашем случае — «прибавь 1» и «разделить на 3»). При этом рассуждения основаны на двух основных идеях: во-первых, надо прийти от одного числа к другому как можно быстрее (ведь количество команд в алгоритме ограничено), а во-вторых, если на каком-то этапе число не делится нацело на 3, то это подсказка: надо применять другую команду («+1»). Такое “обратное” решение записываем «в столбик», где операции выполняются сверху вниз. А теперь, когда найден “обратный путь”, надо записать тот же алгоритм наоборот — уже от числа 5 к числу 26 с использованием исходных команд «вычти 1» и «умножить на три»: 11221 Вот и все! Пример 2: У исполнителя Квадратор две команды, которым присвоены номера: 1. возведи в квадрат 2. вычти 2 Первая из них возводит число на экране во вторую степень, вторая – уменьшает число на 2. Составьте алгоритм получения из числа 1 число 5, содержащий не более пяти команд. В ответе запишите только номера команд. Попробуем решать эту задачу так же, как и предыдущую. «Обратные» команды: «извлечь квадратный корень» и «прибавить 2». «Обратное» решение не дало нам никакого результата, то есть за четыре команды мы не только не приблизились к исходному числу, но и вообще вернулись «на исходные позиции». Разгадка кроется в команде «возвести в квадрат»: она дает один и тот же результат для двух разных исходных чисел, равных по модулю, но различающихся знаком. Поэтому для этой команды надо брать «обратную» команду в виде . Алгоритм решения подобных задач • сначала пытаться решать «обратную» задачу как обычно; • если не получается, то для результата «вычисления квадратного корня» поменять знак результата с плюса на минус; • если операция «взять квадратный корень» используется несколько раз, то сначала пытаться поменять знак на «минус» у одной такой операции; если не получается, то попробовать у другой, потом – у обеих вместе и так перебрать все возможные варианты. Применим данный алгоритм к примеру 2 и получим решение: 22122. 1 Примеры задач для самостоятельного решения 1. У исполнителя Квадратор две команды, которым присвоены номера: 1. возведи в квадрат 2. прибавь 1 Первая из них возводит число на экране во вторую степень, вторая – прибавляет к числу 1. Составьте алгоритм получения из числа 1 числа 26, содержащий не более 5 команд. В ответе запишите только номера команд. Если таких алгоритмов более одного, то запишите любой из них. 2. У исполнителя Квадратор две команды, которым присвоены номера: 1. возведи в квадрат 2. вычти 4 Первая из них возводит число на экране во вторую степень, вторая - уменьшает число на 4. Составьте алгоритм получения из числа 2 числа 64, содержащий не более пяти команд. В ответе запишите только номера команд. Если таких алгоритмов более одного, то запишите любой из них. 3. У исполнителя Конструктор две команды, которым присвоены номера: 1. приписать 2 2. разделить на 2 Первая из них приписывает к числу на экране справа цифру 2, вторая делит его на 2. Запишите порядок команд в алгоритме получения из числа 1 числа 16, содержащем не более 5 команд, указывая только номера команд. Если таких алгоритмов более одного, запишите любой из них. 4. У исполнителя Конструктор две команды, которым присвоены номера: 1. приписать 2 2. разделить на 2 Первая из них приписывает к числу на экране справа цифру 2, вторая - делит его на 2. Запишите порядок команд в алгоритме получения из числа 3 числа 2, содержащем не более 5 команд, указывая только номера команд. Если таких алгоритмов более одного, запишите любой из них. 5. У исполнителя Конструктор две команды, которым присвоены номера: 1. приписать 2 2. разделить на 2 Первая из них приписывает к числу на экране справа цифру 2, вторая - делит его на 2. Запишите порядок команд в алгоритме получения из числа 32 числа 21, содержащем не более 5 команд, указывая только номера команд. Если таких алгоритмов более одного, запишите любой из них. 6. У исполнителя Конструктор две команды, которым присвоены номера: 1. приписать 2 2. разделить на 2 Первая из них приписывает к числу на экране справа цифру 2, вторая - делит его на 2. Запишите порядок команд в алгоритме получения из числа 14 числа 9, содержащем не более 5 команд, указывая только номера команд. Если таких алгоритмов более одного, запишите любой из них. 7. У исполнителя Утроитель две команды, которым присвоены номера: 1. вычти один 2. умножь на три Первая из них уменьшает число на экране на 1, вторая - утраивает его. Запишите порядок команд в алгоритме получения из числа 5 числа 26,содержащем не более 5 команд, указывая лишь номера команд. Если таких алгоритмов более одного, то запишите любой из них. 8. У исполнителя Утроитель две команды, которым присвоены номера: 1. вычти 1 2. умножь на три Первая из них уменьшает число на экране на 1, вторая - утраивает его. Запишите порядок команд в алгоритме получения из числа 9 числа 62,содержащем не более 5 команд, указывая лишь номера команд. Если таких алгоритмов более одного, то запишите любой из них. 9. У исполнителя Утроитель две команды, которым присвоены номера: 1. вычти 1 2. умножь на три 2 Первая из них уменьшает число на экране на 1, вторая - утраивает его. Запишите порядок команд в алгоритме получения из числа 6 числа 10,содержащем не более 5 команд, указывая лишь номера команд. Если таких алгоритмов более одного, то запишите любой из них. 10. У исполнителя Утроитель две команды, которым присвоены номера: 1. вычти 1 2. умножь на три Первая из них уменьшает число на экране на 1, вторая - утраивает его. Запишите порядок команд в алгоритме получения из числа 4 числа 25, содержащем не более 5 команд, указывая лишь номера команд. Если таких алгоритмов более одного, то запишите любой из них. 11. У исполнителя Умножитель две команды, которым присвоены номера: 1. вычти 1 2. умножь на 2 Первая из них уменьшает число на экране на 1, вторая - удваивает его. Запишите порядок команд в алгоритме получения из числа 3 числа 21, содержащем не более 5 команд, указывая лишь номера команд. Если таких алгоритмов более одного, то запишите любой из них. 12. У исполнителя Умножитель две команды, которым присвоены номера: 1. вычти 1 2. умножь на 2 Первая из них уменьшает число на экране на 1, вторая - удваивает его. Запишите порядок команд в алгоритме получения из числа 3 числа 18, содержащем не более 5 команд, указывая лишь номера команд. Если таких алгоритмов более одного, то запишите любой из них. 13. У исполнителя Умножитель две команды, которым присвоены номера: 1. вычти 1 2. умножь на 2 Первая из них уменьшает число на экране на 1, вторая - удваивает его. Запишите порядок команд в алгоритме получения из числа 2 числа 11, содержащем не более 5 команд, указывая лишь номера команд. Если таких алгоритмов более одного, то запишите любой из них. 14. У исполнителя Утроитель две команды, которым присвоены номера: 1. вычти 1 2. умножь на три Первая из них уменьшает число на экране на 1, вторая - утраивает его. Запишите порядок команд в алгоритме получения из числа 7 числа 13, содержащем не более 5 команд, указывая лишь номера команд. Если таких алгоритмов более одного, то запишите любой из них. 15. У исполнителя Утроитель две команды, которым присвоены номера: 1. вычти 2 2. умножь на три Первая из них уменьшает число на экране на 2, вторая - утраивает его. Запишите порядок команд в алгоритме получения из числа 11 числа 13, содержащей не более 5 команд, указывая лишь номера команд. Если таких алгоритмов более одного, то запишите любой из них. 16. У исполнителя Вычислитель две команды, которым присвоены номера: 1. умножь на 3 2. вычти 2 Первая из них увеличивает число на экране в 3 раза, вторая - уменьшает его на 2. Составьте алгоритм получения из числа 1 числа 23, содержащий не более 5 команд. В ответе запишите только номера команд. Если таких алгоритмов более одного, то запишите любой из них. 17. У исполнителя Вычислитель две команды, которым присвоены номера: 1. умножь на 3 2. вычти 1 Первая из них увеличивает число на экране в 3 раза, вторая уменьшает его на 1. Составьте алгоритм получения из числа 1 числа 23, содержащий не более 5 команд. В ответе запишите только номера команд. Если таких алгоритмов более одного, то запишите любой из них. 18. У исполнителя Вычислитель две команды, которым присвоены номера: 1. вычти 3 2. умножь на 3 3 Первая из них уменьшает число на экране на 3, вторая - умножает его на 3. Составьте алгоритм получения из числа 7 числа 177, содержащий не более 5 команд. В ответе запишите только номера команд. Если таких алгоритмов более одного, то запишите любой из них. 19. У исполнителя Вычислитель две команды, которым присвоены номера: 1. прибавить 2 2. удвоить Первая из них увеличивает число на экране на 2, вторая - умножает его на 2. Составьте алгоритм получения из числа 3 числа 44, содержащий не более 5 команд. В ответе запишите только номера команд. Если таких алгоритмов более одного, то запишите любой из них. 20. У исполнителя Вычислитель две команды, которым присвоены номера: 1. умножь на 3 2. вычти 2 Первая из них увеличивает число на экране в 3 раза, вторая уменьшает его на 2. Составьте алгоритм получения из числа 2 числа 30, содержащий не более 5 команд. В ответе запишите только номера команд. Если таких алгоритмов более одного, то запишите любой из них. 21. У исполнителя Квадратор две команды, которым присвоены номера: 1. зачеркни справа 2. возведи в квадрат Первая из них удаляет крайнюю правую цифру числа на экране, вторая - возводит число во вторую степень. Составьте алгоритм получения из числа 5 числа 1, содержащий не более 5 команд. В ответе запишите только номера команд. Если таких алгоритмов более одного, то запишите любой из них. 22. У исполнителя Квадратор две команды, которым присвоены номера: 1. зачеркни слева 2. возведи в квадрат Первая из них удаляет крайнюю левую цифру числа на экране, вторая - возводит число во вторую степень. Составьте алгоритм получения из числа 8 числа 56, содержащий не более 5 команд. В ответе запишите только номера команд. Если таких алгоритмов более одного, то запишите любой из них. 23. У исполнителя Квадратор две команды, которым присвоены номера: 1. возведи в квадрат 2. вычти 2 Первая из них возводит число на экране во вторую степень, вторая - вычитает из числа 2. Составьте алгоритм получения из числа 7 числа 79, содержащий не более 5 команд. В ответе запишите только номера команд. Если таких алгоритмов более одного, то запишите любой из них. 24. У исполнителя Вычислитель две команды, которым присвоены номера: 1. умножь на 2 2. вычти 1 Первая из них увеличивает число на экране в 2 раза, вторая уменьшает его на 1. Составьте алгоритм получения из числа 9 числа 29, содержащий не более 5 команд. В ответе запишите только номера команд. Если таких алгоритмов более одного, запишите любой из них. 25. У исполнителя Вычислитель две команды, которым присвоены номера: 1. прибавь один 2. возведи в квадрат Первая из них увеличивает число на экране на 1, вторая - возводит его во вторую степень. Составьте алгоритм получения из числа 2 числа 19, содержащий не более 5 команд. В ответе запишите только номера команд. Если таких алгоритмов более одного, то запишите любой из них. 26. У исполнителя Вычислитель две команды, которым присвоены номера: 1. вычесть 3 2. приписать 1 Первая из них уменьшает число на 3, а вторая приписывает к нему справа 1. Составьте алгоритм получения из числа 8 числа 15, содержащий не более 5 команд. В ответе запишите только номера команд. Если таких алгоритмов более одного, запишите любой из них. 4 27. У исполнителя Квадратор две команды, которым присвоены номера: 1. возведи в квадрат, 2. прибавь 1. Первая из них возводит число на экране в квадрат, вторая увеличивает его на 1. Запишите порядок команд в программе, которая преобразует число 1 в число 10 и содержит не более 4 команд. Указывайте лишь номера команд. 28. У исполнителя Квадратор две команды, которым присвоены номера: 1. прибавь 3 2. возведи в квадрат Первая из них увеличивает число на экране на 3, вторая возводит его во вторую степень. Исполнитель работает только с натуральными числами. Составьте алгоритм получения из числа 4 числа 58, содержащий не более 5 команд. В ответе запишите только номера команд. 29. У исполнителя Делитель две команды, которым присвоены номера: 1. раздели на 2 2. вычти 1 Первая из них уменьшает число на экране в 2 раза, вторая уменьшает его на 1. Исполнитель работает только с натуральными числами. Составьте алгоритм получения из числа 65 числа 4, содержащий не более 5 команд. В ответе запишите только номера команд. 30. У исполнителя Квадратор две команды, которым присвоены номера: 1. вычти 3 2. возведи в квадрат Первая из них уменьшает число на экране на 3, вторая возводит его во вторую степень. Исполнитель работает только с натуральными числами. Составьте алгоритм получения из числа 4 числа 49, содержащий не более 5 команд. В ответе запишите только номера команд. 31. У исполнителя Вычислитель две команды, которым присвоены номера: 1. умножь на 4 2. вычти 2 Первая из них увеличивает число на экране в 4 раза, вторая уменьшает его на 2. Составьте алгоритм получения из числа 4 числа 28, содержащий не более 5 команд. В ответе запишите только номера команд. 5