Что вычисляется? const Sz = 100; var a: array [1..Sz] of integer; N: integer; begin N := 20; a[1] := 2; for var i:=2 to N do a[i] := a[i-1] * 2; writeln('Степени двойки: '); for var i:=1 to N do writeln(i:3,a[i]:9); end.
ответ:Можно управлять чем-то вручную, а можно запрограммировать и надеяться, что все сработает как надо. В быту широко используется программное управление для выполнения стандартных операций. Например выбор режим стирки в стиральной машине. При выборе того или иного режима активируется соответствующая программа и удобно.
Точно также производится готовка в мультиварке. Но когда требуется сделать что-то, чего не учитывает программа, делать приходится вручную.
При всей универсальности программа не может учесть всего. Всегда приходится что-то корректировать. Поэтому на практике приходится прибегать к обоим методам. Особенно, когда ручное управление затруднено. Так происходит, например при управлении марсоходом. Радиосигнал идет довольно долго и порулить" марсоходом с земли в реальном времени не получится. Приходится отправлять блок команд и принимать сигнал о их выполнении.
В общем, вручную безусловно лучше, но не всегда возможно.
1. Схематически записываем условие Есть две команды: (1) ×3 и (2) -5 Тут я ввожу обозначения: в скобках некий "код" команды, а далее обозначение, что именно она делает. Команда с кодом 1 умножает на три, с кодом 2 - вычитает 5. Теперь, что нам надо получить: 8 ⇒ 36, т.е. из 8 получить 36.
2. Анализируем, какое число может быть перед выполнением последней (т.е. пятой) команды. Применим к результату команды, обратные к (1) и (2). Действие, обратное умножению - это деление, вычитанию - сложение. Для (1) получим 36/3 = 12, т.е. в результате выполнения первых четырех (пока в неизвестном порядке) команд должно получиться 12. Для (2) получим 36+5 = 41.
3. Теперь анализируем, какой могла бы быть третья команда Чтобы получить 12 после (1), нужно взять число 12/3 = 4. Чтобы получить 12 после (2), нужно взять число 4+5=9. Получить 41 после (1) невозможно, поскольку 41 на 3 не делится нацело. Чтобы получить 41 после (2), нужно взять число 41+5=46. Итак, имеем три числа-кандидата. 46 выглядит подозрительно, потому что получить его можно только из 51 при поскольку 46 на 3 не делится и не может быть получено при А получить 8 ⇒ 51 за две возможные операции не получится. Поэтому 46 отбрасываем.
4. Анализируем, какой могла бы быть вторая по порядку команда Получить 4 после (1) нельзя, потому что 4 не делится на 3. Чтобы получить 4 после (2), нужно взять число 4+5=9. Чтобы получить 9 после (1), нужно взять число 9/3 = 3. Чтобы получить 9 после (2), нужно взять число 9+5=14.
5. Рассматриваем, что можно получить из исходного числа а) 8 после (1) дает 8×3 = 24 и получить 3, 9 или 14 из 24 при одной из имеющихся команд невозможно. б) 8 после (2) дает 8-5 = 3 - это и есть решение проблемы.
ответ:Можно управлять чем-то вручную, а можно запрограммировать и надеяться, что все сработает как надо. В быту широко используется программное управление для выполнения стандартных операций. Например выбор режим стирки в стиральной машине. При выборе того или иного режима активируется соответствующая программа и удобно.
Точно также производится готовка в мультиварке. Но когда требуется сделать что-то, чего не учитывает программа, делать приходится вручную.
При всей универсальности программа не может учесть всего. Всегда приходится что-то корректировать. Поэтому на практике приходится прибегать к обоим методам. Особенно, когда ручное управление затруднено. Так происходит, например при управлении марсоходом. Радиосигнал идет довольно долго и порулить" марсоходом с земли в реальном времени не получится. Приходится отправлять блок команд и принимать сигнал о их выполнении.
В общем, вручную безусловно лучше, но не всегда возможно.
Есть две команды: (1) ×3 и (2) -5
Тут я ввожу обозначения: в скобках некий "код" команды, а далее обозначение, что именно она делает. Команда с кодом 1 умножает на три, с кодом 2 - вычитает 5.
Теперь, что нам надо получить: 8 ⇒ 36, т.е. из 8 получить 36.
2. Анализируем, какое число может быть перед выполнением последней (т.е. пятой) команды.
Применим к результату команды, обратные к (1) и (2).
Действие, обратное умножению - это деление, вычитанию - сложение.
Для (1) получим 36/3 = 12, т.е. в результате выполнения первых четырех (пока в неизвестном порядке) команд должно получиться 12.
Для (2) получим 36+5 = 41.
3. Теперь анализируем, какой могла бы быть третья команда
Чтобы получить 12 после (1), нужно взять число 12/3 = 4.
Чтобы получить 12 после (2), нужно взять число 4+5=9.
Получить 41 после (1) невозможно, поскольку 41 на 3 не делится нацело.
Чтобы получить 41 после (2), нужно взять число 41+5=46.
Итак, имеем три числа-кандидата.
46 выглядит подозрительно, потому что получить его можно только из 51 при поскольку 46 на 3 не делится и не может быть получено при А получить 8 ⇒ 51 за две возможные операции не получится. Поэтому 46 отбрасываем.
4. Анализируем, какой могла бы быть вторая по порядку команда
Получить 4 после (1) нельзя, потому что 4 не делится на 3.
Чтобы получить 4 после (2), нужно взять число 4+5=9.
Чтобы получить 9 после (1), нужно взять число 9/3 = 3.
Чтобы получить 9 после (2), нужно взять число 9+5=14.
5. Рассматриваем, что можно получить из исходного числа
а) 8 после (1) дает 8×3 = 24 и получить 3, 9 или 14 из 24 при одной из имеющихся команд невозможно.
б) 8 после (2) дает 8-5 = 3 - это и есть решение проблемы.
6. Устанавливаем цепочку преобразований (код команды в скобках).
8-5 = 3 (2)
3х3 = 9 (1)
9-5 = 4 (2)
4х3 = 12 (1)
12х3 = 36 (1)
ответ: 21211 - набор команд