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

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

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

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

Вопрос от Анонимного юзера 11 января 2026 14:41

Задача №1 «Каталог» Учёные часто славятся своей рассеянностью. И немудрено - уже столько всего открыто, разве упомнишь! И вот, когда обнаруживают новый вид каких-нибудь гусениц, нужно придумать им название, но не повториться. Напиши программу, которая проверяет, не было ли название использовано раньше. Формат ввода Вводится количество существующих названий, затем сами названия гусениц. Формат вывода Для каждого предложенного названия вывести, использовалось ли оно раньше, то есть ДА или НЕТ.

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

11 января 2026 14:41

Ниже решение на языке Python с подробным пояснением.

Что делает программа

  • Читает число n — количество уже существующих названий.
  • Читает далее n строк — эти названия заносит в множество used.
  • Далее обрабатывает оставшиеся строки входа как предлагаемые названия:
    • если название уже встречалось ранее (есть в used) выводит ДА;
    • если нет — выводит НЕТ и добавляет название в used (чтобы учесть «новое» имя в дальнейшем).

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

Сложность

  • Время: O(n + m), где m — количество предложенных названий (размер оставшейся части ввода).
  • Память: O(n + m) из-за хранения множества имен.

Код (Python)

import sys

def solve(): data = sys.stdin.read().splitlines() i = 0 # пропускаем пустые строки в начале while i < len(data) and data[i].strip() == "": i += 1 if i >= len(data): return

# число существующих названий
try:
    n = int(data[i].strip())
except:
    n = 0
i += 1

used = set()

# читаем следующие n строк как существующие названия
count = 0
while count < n and i < len(data):
    line = data[i].rstrip('\n')
    if line.strip() != "":
        used.add(line.strip())
        count += 1
    i += 1

# обрабатываем оставшиеся строки как предложенные названия
out_lines = []
while i < len(data):
    s = data[i].rstrip('\n').strip()
    i += 1
    if s == "":
        continue
    if s in used:
        out_lines.append("ДА")
    else:
        out_lines.append("НЕТ")
        used.add(s)

sys.stdout.write("\n".join(out_lines))

if name == "main": solve()

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

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

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

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

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

qr-codegoogle-playapp-store

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

Задача №1 «Каталог» Учёные часто славятся своей рассеянностью. И немудрено - уже столько всего открыто, разве упомнишь! И вот, когда обнаруживают новый вид каких-нибудь гусениц, нужно придумать им название, но не повториться. Напиши программу, которая проверяет, не было ли название использовано раньше. Формат ввода Вводится количество существующих названий, затем сами названия гусениц. Формат вывода Для каждого предложенного названия вывести, использовалось ли оно раньше, то есть ДА или НЕТ.
Ниже решение на языке Python с подробным пояснением. Что делает программа - Читает число n — количество уже существующих названий. - Читает далее n строк — эти названия заносит в множество used. - Далее обрабатывает оставшиеся строки входа как предлагаемые названия: - если название уже встречалось ранее (есть в used) выводит ДА; - если нет — выводит НЕТ и добавляет название в used (чтобы учесть «новое» имя в дальнейшем). Важно: мы считаем, что ввод может заканчиваться после нескольких предложенных названий; процесс продолжается до конца входа. Пунктность и регистр строк учитываются дословно (без нормализации). Сложность - Время: O(n + m), где m — количество предложенных названий (размер оставшейся части ввода). - Память: O(n + m) из-за хранения множества имен. Код (Python) import sys def solve(): data = sys.stdin.read().splitlines() i = 0 # пропускаем пустые строки в начале while i < len(data) and data[i].strip() == "": i += 1 if i >= len(data): return # число существующих названий try: n = int(data[i].strip()) except: n = 0 i += 1 used = set() # читаем следующие n строк как существующие названия count = 0 while count < n and i < len(data): line = data[i].rstrip('\n') if line.strip() != "": used.add(line.strip()) count += 1 i += 1 # обрабатываем оставшиеся строки как предложенные названия out_lines = [] while i < len(data): s = data[i].rstrip('\n').strip() i += 1 if s == "": continue if s in used: out_lines.append("ДА") else: out_lines.append("НЕТ") used.add(s) sys.stdout.write("\n".join(out_lines)) if __name__ == "__main__": solve()