12.03 Исполнитель «Редактор» – определение исходной строки по результату
Ошибка.
Попробуйте повторить позже
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в
обеих командах и
обозначают цепочки цифр.
А) заменить
Эта команда заменяет в строке первое слева вхождение цепочки на цепочку
Например, выполнение
команды
заменить
преобразует строку в строку
Если в строке нет вхождений цепочки то выполнение команды заменить
не меняет эту строку.
Б) нашлось
Эта команда проверяет, встречается ли цепочка в строке исполнителя Редактор. Если она встречается, то команда
возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом
не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Известно, что исходная строка начиналась с нуля, а далее содержала только единицы, двойки и тройки. После
выполнения данной программы получилась строка, содержащая единиц,
двойки и
троек. Сколько двоек было
в исходной строке?
НАЧАЛО
ПОКА нашлось ИЛИ нашлось
ИЛИ нашлось
заменить
заменить
заменить
КОНЕЦ ПОКА
КОНЕЦ
Аналитическое решение:
Можно понять суть изменений:
- до начала было
единиц, станет
двоек,
троек,
единиц
- до начала было
двоек, станет
единиц
- до начала было
троек, станет
троек,
троек,
единиц
Получается, единиц,
двоек,
троек.
Решим систему:
|
Ответ: 43.
Программное решение:
# Будем перебирать количество единиц, двоек и троек for c1 in range(100): flag = 1 for c2 in range(100): for c3 in range(100): s = ’0’ + c1 * ’1’ + c2 * ’2’ + c3 * ’3’ # Порядок цифр для алгоритма не важен # Осуществляем алгоритм while (’01’ in s) or (’02’ in s) or (’03’ in s): s = s.replace(’01’, ’2302’, 1) s = s.replace(’02’, ’10’, 1) s = s.replace(’03’, ’201’, 1) # Проверка, что в итоге получается строка, соответствующая условию if (s.count(’1’) == 58) and (s.count(’2’) == 23) and (s.count(’3’) == 15): flag = 0 print(c2) # Вывод ответа, после этого нужно остановить программу break if flag == 0: break if flag == 0: break
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!