У исполнителя АТЛАНТ две команды, которым присвоены номера:
- Вычти
;
- Умножь на
.
Первая из них уменьшает число на экране на , вторая – увеличивает его в три раза.
Запишите порядок команд в программе получения из числа числа
, содержащей не более
команд, указывая лишь номера команд.
Решение кодом
for k1 in (’120’):
for k2 in (’120’):
for k3 in (’120’):
for k4 in (’120’):
for k5 in (’120’):
for k6 in (’120’):
s = k1 + k2 + k3 + k4 + k5 + k6
start = 4
for x in s:
if x == ’1’:
start -= 2
if x == ’2’:
start *= 3
else:
start += 0
if start == 50:
print(s)
Если бы вышли нули, мы бы их просто не записали в последовательность, так как они не несут в себе действия. Добавили их, чтобы учесть, что может быть меньше команд.
Решение аналитически
Представим, что нам надо получить из число
обратными командами, то есть прибавить
и поделить на
. Прибавляем к
число
два раза, получаем
, делим его на
, получаем
, еще раз делим на
, получаем
, делим на
, получаем
, прибавляем
, получаем
. Получается:
. Эту последовательность надо развернуть, так как команды были обратные. Ответ:
.