Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3480671
А
Аноним
23 октября 2025 09:14 · публичный вопрос
А
Аноним

Ограничение по времени: 1 секунда Ограничение по памяти: 256 мегабайт Вы разрабатываете препроцессор текста для языковой модели. Пользователи иногда тянут буквы, например:…

Запрос пользователя

Ограничение по времени: 1 секунда Ограничение по памяти: 256 мегабайт Вы разрабатываете препроцессор текста для языковой модели. Пользователи иногда тянут буквы, например: coooool, уаааау. Перед обучением модели и при обработке пользовательских сообщений такие повторения нужно нормализовать: каждая подряд идущая серия одинаковых символов должна иметь длину не больше К. По заданным K и строке S (состоящей из латинских букв) получите строку S', в которой длина каждой максимальной серии одинаковых символов не превосходит К. Не меняйте порядок символов и не удаляйте серии полностью. Формат входных данных Первая строка содержит натуральное число К > 1. Вторая строка содержит строку S из латинских букв (A..Z, а.2). Формат выходных данных Выведите исправленную строку. Ввод Вывод 2 uraaSuperr uraaaaSuperrr Код 1 Python 3 v

Ответ нейросети
23 октября 2025 09:14

Решение на Python 3

Идея:

  • пройти по строке и для каждого максимального блока одинаковых символов длиной L записать min(L, K) копий этого символа.
  • таким образом каждый блок имеет длину не более K, порядок символов не меняется.

Код:

import sys

def main():
    # читаем пару строк: сначала K, затем S
    lines = [line.strip() for line in sys.stdin if line.strip() != ""]
    if len(lines) < 2:
        return
    k = int(lines[0])
    s = lines[1]

    res = []
    i = 0
    n = len(s)
    while i < n:
        ch = s[i]
        j = i
        while j < n and s[j] == ch:
            j += 1
        run_len = j - i
        take = run_len if run_len <= k else k
        res.append(ch * take)
        i = j

    print(''.join(res))

if __name__ == "__main__":
    main()

Пример:

  • Ввод: 2 ur aa S u p e rr (без пробелов в реальном вводе: "uraaSuperr")
  • Вывод: uraaSuperr

Примечание:

  • В примере из условия, где ввод "2\nuraaSuperr", корректный результат по этому алгоритму будет "uraaSuperr". Если в тестах ожидалось иное поведение, возможно в примере допущена ошибка в описании.