Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в которых v и w обозначают последовательности цифр.
А) заменить (v,w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (121, 3) преобразует строку 112112 в строку 1312.
Если в строке нет вхождений последовательности v, то выполнение команды не изменяет исходную строку.
Б) Нашлось (v).
Эта команда проверяет, встречается ли последовательность v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.
Дана программа для редактора:
НАЧАЛО
ПОКА нашлось (01)
ЕСЛИ нашлось (0111)
ТО заменить (0111, 101)
ИНАЧЕ
заменить (01, 10)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
На вход программы, приведенной выше, поступает строка, начинающаяся с цифры ”0” , а затем содержащая 216 цифр ”1”. В результате выполнения программы получается некоторое число, записанное в двоичной системе счисления. Определите сумму цифр в восьмеричной записи получившегося числа.
В ответе запишите сумму цифр восьмеричной записи, записанную в десятичной системе счисления.
s = ’0’ + 216*’1’
while ’01’ in s:
if ’0111’ in s:
s = s.replace(’0111’, ’101’, 1)
else:
s = s.replace(’01’, ’10’, 1)
s = int(s, 2)
s = oct(s)[2:]
sm = sum([int(i) for i in s])
print(sm)