На экране есть два окна, в каждом из которых написано по числу
Формулировка задания: На экране есть два окна, в каждом из которых написано по числу. У исполнителя Сумматор две команды, которым присвоены номера: 1 – запиши сумму чисел в первое окно; 2 – запиши сумму чисел во второе окно. Выполняя первую из них, Сумматор складывает числа в окнах и заменяет этой суммой число в первом окне, а выполняя вторую, складывает числа и заменяет этой суммой число во втором окне. Запишите порядок команд в программе получения из пары чисел A и B пары чисел C и D, содержащей не более K команд, указывая лишь номера команд.
Задание входит в ЕГЭ по информатике для 11 класса под номером 6 (Анализ и построение алгоритмов для исполнителей).
Рассмотрим, как решаются подобные задания на примере.
Пример задания:
На экране есть два окна, в каждом из которых написано по числу. У исполнителя Сумматор две команды, которым присвоены номера:
1. запиши сумму чисел в первое окно
2. запиши сумму чисел во второе окно
Выполняя первую из них, Сумматор складывает числа в окнах и заменяет этой суммой число в первом окне, а выполняя вторую, складывает числа и заменяет этой суммой число во втором окне. Запишите порядок команд в программе получения из пары чисел 1 и 2 пары чисел 13 и 4, содержащей не более 5 команд, указывая лишь номера команд.
(Например, программа 21211 это программа
запиши сумму чисел во второе окно
запиши сумму чисел в первое окно
запиши сумму чисел во второе окно
запиши сумму чисел в первое окно
запиши сумму чисел в первое окно
которая преобразует пару чисел 1 и 0 в пару чисел 8 и 3.)
Решение:
Нужно получить из пары чисел 1 и 2 пару чисел 13 и 4, используя не более 5 команд. Лучше всего решать эту задачу от обратного – получить из пары чисел 13 и 4 пару чисел 1 и 2. Так будет проще определить, в какое окно записывалась сумма чисел.
Заменим команды на обратные: «запиши сумму чисел в первое окно» на «запиши разность чисел в первое окно», а «запиши сумму чисел во второе окно» на «запиши разность чисел во второе окно». И решим эту задачу от обратного.
Так как 13 больше 4, первой командой будет «запиши разность чисел в первое окно» и его значение будет равно:
13 – 4 = 9
Так как 9 больше 4, следующей командой будет «запиши разность чисел в первое окно» и его значение будет равно:
9 – 4 = 5
Так как 5 больше 4, следующей командой будет «запиши разность чисел в первое окно» и его значение будет равно:
5 – 4 = 1
Так как 1 меньше 4, следующей командой будет «запиши разность чисел во второе окно» и его значение будет равно:
4 – 1 = 3
Так как 1 меньше 3, последней командой будет «запиши разность чисел во второе окно» и его значение будет равно:
3 – 1 = 2
Порядок действий представлен ниже в виде таблицы:
Первое окно | Второе окно |
---|---|
13 | 4 |
13 – 4 = 9 | 4 |
9 – 4 = 5 | 4 |
5 – 4 = 1 | 4 |
1 | 4 – 1 = 3 |
1 | 3 – 1 = 2 |
Ровно за 5 команд мы получили из пары чисел 13 и 4 пару чисел 1 и 2. Осталось изменить порядок команд на обратный и заменить названия команд на номера исходных. Таким образом, пару чисел 13 и 4 из пары чисел 1 и 2 мы можем получить выполнением команд: «запиши разность чисел во второе окно», «запиши разность чисел во второе окно», «запиши разность чисел в первое окно», «запиши разность чисел в первое окно», «запиши разность чисел в первое окно» или 22111.
Проверим, что все сделано верно:
Первое окно | Второе окно |
---|---|
1 | 2 |
1 | 1 + 2 = 3 |
1 | 1 + 3 = 4 |
1 + 4 = 5 | 4 |
5 + 4 = 9 | 4 |
9 + 4 = 13 | 4 |
Ответ: 22111
Нашли ошибку? Выделите текст и нажмите Ctrl + Enter.
Есть другой способ решения?