Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 23 октября 2025 12:16

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

Ответ нейросети

23 октября 2025 12:16

Задача понятна: ограничить каждую максимальную серию одинаковых символов в строке S длиной не более K. Порядок символов не меняем, целые серии не удаляем, просто обрезаем их до максимальной длины K.

Пошаговый разбор решения

  • Идём по строке S слева направо и считаем длину текущей серии одинаковых символов.
  • Когда встречается другой символ, дописываем в результат текущую серию, но не более K повторов: повторяем текущий символ min(cnt, K) раз.
  • Затем начинаем считать новую серию для нового символа.
  • После цикла дописываем последнюю серию тоже с ограничением длины K.
  • Временная сложность: O(|S|), памяти требуется O(|S|) на результат.

Пример (для понимания)

  • Ввод: K = 2, S = "uraaSuperr"
  • Разбор: серии: "uu", "r", "aa", "S", "u", "p", "e", "rr"
  • Каждая серия уже длины ≤ 2, поэтому результат: "uuraaSuperr" (ничего не обрезаем). Если бы была серия длиннее K, она бы обрезалась до K.

Питоновская реализация (Python 3)

def cap_runs(K, S):
    if not S:
        return ""
    res = []
    cur = S[0]
    cnt = 1
    for ch in S[1:]:
        if ch == cur:
            cnt += 1
        else:
            res.append(cur * min(cnt, K))
            cur = ch
            cnt = 1
    # добавить последнюю серию
    res.append(cur * min(cnt, K))
    return "".join(res)

def main():
    import sys
    data = sys.stdin.read().splitlines()
    if not data:
        return
    K = int(data[0].strip())
    S = data[1].strip() if len(data) > 1 else ""
    sys.stdout.write(cap_runs(K, S))

if __name__ == "__main__":
    main()

Как запускать

  • Ввод: две строки
    • Первая строка содержит K (целое число > 1)
    • Вторая строка содержит строку S из латинских букв
  • Вывод: строка S', где каждая максимальная серия одинаковых символов не длиннее K

Пример теста

  • Ввод: 2 ur aaS uperr
  • Вывод: uuraaSuperr

Примечание

  • Если в примере задачи указано другое поведение (например, обрезание некоторых серий иначе), уточните входные данные; базовый алгоритм остаётся верным: обрезаем каждую серию до максимальной длины K, не удаляя её целиком и не меняя порядок символов.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Ограничение по времени: 1 секунда Ограничение по памяти: 256 мегабайт Вы разрабатываете препроцессор текста для языковой модели. Пользователи иногда тянут буквы, например: coooool, yaaaay. Перед обучением модели и при обработке пользовательских сообщений такие повторения нужно нормализовать: каждая подряд идущая серия одинаковых символов должна иметь длину не больше К. По заданным К и строке S (состоящей из латинских букв) получите строку S', в которой длина каждой максимальной серии одинаковых символов не превосходит К. Не меняйте порядок символов и не удаляйте серии полностью. Формат входных данных Первая строка содержит натуральное число К > 1. Вторая строка содержит строку S из латинских букв (A..Z, а..z). Формат выходных данных Выведите исправленную строку. Ввод 2 uraaSuperr Вывод uraaaaSuperrr
Задача понятна: ограничить каждую максимальную серию одинаковых символов в строке S длиной не более K. Порядок символов не меняем, целые серии не удаляем, просто обрезаем их до максимальной длины K. Пошаговый разбор решения - Идём по строке S слева направо и считаем длину текущей серии одинаковых символов. - Когда встречается другой символ, дописываем в результат текущую серию, но не более K повторов: повторяем текущий символ min(cnt, K) раз. - Затем начинаем считать новую серию для нового символа. - После цикла дописываем последнюю серию тоже с ограничением длины K. - Временная сложность: O(|S|), памяти требуется O(|S|) на результат. Пример (для понимания) - Ввод: K = 2, S = "uraaSuperr" - Разбор: серии: "uu", "r", "aa", "S", "u", "p", "e", "rr" - Каждая серия уже длины ≤ 2, поэтому результат: "uuraaSuperr" (ничего не обрезаем). Если бы была серия длиннее K, она бы обрезалась до K. Питоновская реализация (Python 3) ```python def cap_runs(K, S): if not S: return "" res = [] cur = S[0] cnt = 1 for ch in S[1:]: if ch == cur: cnt += 1 else: res.append(cur * min(cnt, K)) cur = ch cnt = 1 # добавить последнюю серию res.append(cur * min(cnt, K)) return "".join(res) def main(): import sys data = sys.stdin.read().splitlines() if not data: return K = int(data[0].strip()) S = data[1].strip() if len(data) > 1 else "" sys.stdout.write(cap_runs(K, S)) if __name__ == "__main__": main() ``` Как запускать - Ввод: две строки - Первая строка содержит K (целое число > 1) - Вторая строка содержит строку S из латинских букв - Вывод: строка S', где каждая максимальная серия одинаковых символов не длиннее K Пример теста - Ввод: 2 ur aaS uperr - Вывод: uuraaSuperr Примечание - Если в примере задачи указано другое поведение (например, обрезание некоторых серий иначе), уточните входные данные; базовый алгоритм остаётся верным: обрезаем каждую серию до максимальной длины K, не удаляя её целиком и не меняя порядок символов.