12.01 Исполнитель «Редактор» – известная строка
Ошибка.
Попробуйте повторить позже
Исполнитель Панцирь получает на вход строку цифр и преобразовывает её. Панцирь может выполнять две команды, в обеих командах v и w обозначают цепочки символов.
1. заменить (v, w)
2. нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Панцирь. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь».
Дана программа для исполнителя Панцирь:
НАЧАЛО
ПОКА нашлось ИЛИ нашлось
ПОКА нашлось
ТО заменить
КОНЕЦ ПОКА
ЕСЛИ нашлось
ТО заменить
ИНАЧЕ ЕСЛИ нашлось
ТО заменить
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Найдите произведение количества тех цифр, которых больше всего, и значения тех цифр, которых
меньше всего в строке, полученной в результате применения приведённой выше программы к строке:
Так, если программа вывела бы 60 пятерок и 10 четверок, то ответом было число
Аналитическое решение
Для удобства будем использвовать следующие обозначения для количества одинаковых цифр,
идущих подряд: где A – цифра, которая находится в строке, а B – количество этих
цифр.
Изначально была строка Цикл ПОКА внутри основного цикла ПОКА будет работать до
момента исчезновения всех двоек, таким образом после выполнения этого цикла строка будет состоять
из 301 единицы.
Далее все кроме последней единицы исчезнут, а на их месте появятся двойки.
После этого все двойки заменятся нулями и программа завершит свою работу. В полученной строке
150 нулей и 1 единица. Больше всего нулей, меньше – единиц, ответ
Решение программой
s = 231 * ’1’ + 70 * ’2’ # Получаем строку # Осуществляем алгоритм while (’11’ in s) or (’2’ in s): while ’12’ in s: s = s.replace(’12’, ’11’, 1) if ’11’ in s: s = s.replace(’11’, ’2’, 1) elif ’2’ in s: s = s.replace(’2’, ’0’, 1) maxCount = 0 # Максимальное количество цифр digit = ’’ # Цифра, которая больше всего раз встречается в строке for d in set(s): # Перебор цифр (без повторений) if s.count(d) > maxCount: maxCount = s.count(d) digit = d # Теперь нужно maxCount умножить на значения цифр, кроме digit for d in set(s): if d != digit: maxCount *= int(d) # Умножаем на числовое значение цифры print(maxCount) # Выводим результат
Специальные программы

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

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

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

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

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

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