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

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

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

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

Вопрос от Анонимного юзера 09 апреля 2026 23:57

Учёные часто славятся своей рассеянностью. И немудрено - уже столько всего открыто, разве упомнишь! И вот, когда обнаруживают новый вид каких-нибудь гусениц, нужно придумать им название, но не повториться. Напиши программу, которая проверяет, не было ли название использовано раньше. Формат ввода Вводится количество существующих названий, затем сами названия гусениц. Формат вывода Для каждого предложенного названия вывести, использовалось ли оно раньше, то есть ДА или НЕТ. Ввод Lonomia_Obliqua Limacodidae_Euclidae Acharia_Stimulea Coscinocera_Hercules Limacodidae_Euclidae Limacodidae_Euclidae Вывод HET HET HET HET ДА ДА

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

09 апреля 2026 23:57

Задача: проверить, встречалось ли каждое название гусеницы раньше в списке. Для каждого названия вывести YES/NO (мы будем использовать ДА/НЕТ согласно условию).

Алгоритм (пояснение шаг за шагом)

  • Вход может быть в двух форматах:
    1. Первая строка — целое число N, затем N строк с существующими названиями. Далее идут названия для проверки — для каждого нужно ответить, встречалось ли оно ранее (в списке существующих и ранее встречавшихся проверяемых).
    2. Просто список названий без числа в начале. Для каждого названия в очередности выводим ДА, если оно уже встречалось ранее в списке; иначе НЕТ и добавляем название в множество просмотренных.
  • Реализация: читаем все строки, удаляем пустые. Если первая строка целое число N, используем формат 1; иначе — формат 2.
  • Для проверки используем множество. Для каждого названия: если оно уже в множестве — выводим ДА; иначе — НЕТ и добавляем название в множество.
  • Сложность: время — O(k), где k — количество обработанных названий; память — O(u), где u — количество уникальных названий.

Пример соответствия с форматом из условия:

  • Если первые 4 строки — существующие названия, а затем две строки — проверки, то для последних двух названий вывод будет ДА, ДА (как в примере).

Код на Python 3 (робастный к двум форматам ввода):

import sys

def is_int(s: str) -> bool:
    try:
        int(s)
        return True
    except ValueError:
        return False

def main():
    data = sys.stdin.read().splitlines()
    # Удаляем пустые строки, чтобы не мешать парсингу
    lines = [line.strip() for line in data if line.strip() != ""]

    if not lines:
        return

    # Формат 1: первая строка целое число N
    if is_int(lines[0]):
        n = int(lines[0])
        idx = 1
        seen = set()

        # Добавляем первые N существующих названий
        for i in range(n):
            if idx >= len(lines):
                break
            seen.add(lines[idx])
            idx += 1

        # Обработка оставшихся строк как запросов
        out = []
        while idx < len(lines):
            name = lines[idx]
            if name in seen:
                out.append("ДА")
            else:
                out.append("НЕТ")
                seen.add(name)
            idx += 1

        if out:
            print("\n".join(out))
        # Если не было запросов, просто завершиться без вывода
        return

    # Формат 2: весь вход — последовательность названий
    seen = set()
    out = []
    for name in lines:
        if name in seen:
            out.append("ДА")
        else:
            out.append("НЕТ")
            seen.add(name)

    print("\n".join(out))

if __name__ == "__main__":
    main()

Пояснения к выводу

  • В задаче обычно требуется выводить ДА, если название уже встречалось ранее, и НЕТ — если это новое название.
  • Пример из описания: первые четыре названия — новые, поэтому НЕТ (или НЕТ/НЕТ/НЕТ/НЕТ в зависимости от используемой надписи), пятые и шестые совпадают с ранее встречавшимися, поэтому ДА, ДА.
  • Обратите внимание: в вашем тестовом окружении возможно требование именно ДА/НЕТ или их русские аналоги. По умолчанию в коде выше используются ДА и НЕТ.

Если хотите, могу адаптировать вывод под конкретный формат (например, точно "YES"/"NO" или другой набор слов).

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

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

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

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

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

qr-codegoogle-playapp-store

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

Учёные часто славятся своей рассеянностью. И немудрено - уже столько всего открыто, разве упомнишь! И вот, когда обнаруживают новый вид каких-нибудь гусениц, нужно придумать им название, но не повториться. Напиши программу, которая проверяет, не было ли название использовано раньше. Формат ввода Вводится количество существующих названий, затем сами названия гусениц. Формат вывода Для каждого предложенного названия вывести, использовалось ли оно раньше, то есть ДА или НЕТ. Ввод Lonomia_Obliqua Limacodidae_Euclidae Acharia_Stimulea Coscinocera_Hercules Limacodidae_Euclidae Limacodidae_Euclidae Вывод HET HET HET HET ДА ДА
Задача: проверить, встречалось ли каждое название гусеницы раньше в списке. Для каждого названия вывести YES/NO (мы будем использовать ДА/НЕТ согласно условию). Алгоритм (пояснение шаг за шагом) - Вход может быть в двух форматах: 1) Первая строка — целое число N, затем N строк с существующими названиями. Далее идут названия для проверки — для каждого нужно ответить, встречалось ли оно ранее (в списке существующих и ранее встречавшихся проверяемых). 2) Просто список названий без числа в начале. Для каждого названия в очередности выводим ДА, если оно уже встречалось ранее в списке; иначе НЕТ и добавляем название в множество просмотренных. - Реализация: читаем все строки, удаляем пустые. Если первая строка целое число N, используем формат 1; иначе — формат 2. - Для проверки используем множество. Для каждого названия: если оно уже в множестве — выводим ДА; иначе — НЕТ и добавляем название в множество. - Сложность: время — O(k), где k — количество обработанных названий; память — O(u), где u — количество уникальных названий. Пример соответствия с форматом из условия: - Если первые 4 строки — существующие названия, а затем две строки — проверки, то для последних двух названий вывод будет ДА, ДА (как в примере). Код на Python 3 (робастный к двум форматам ввода): ```python import sys def is_int(s: str) -> bool: try: int(s) return True except ValueError: return False def main(): data = sys.stdin.read().splitlines() # Удаляем пустые строки, чтобы не мешать парсингу lines = [line.strip() for line in data if line.strip() != ""] if not lines: return # Формат 1: первая строка целое число N if is_int(lines[0]): n = int(lines[0]) idx = 1 seen = set() # Добавляем первые N существующих названий for i in range(n): if idx >= len(lines): break seen.add(lines[idx]) idx += 1 # Обработка оставшихся строк как запросов out = [] while idx < len(lines): name = lines[idx] if name in seen: out.append("ДА") else: out.append("НЕТ") seen.add(name) idx += 1 if out: print("\n".join(out)) # Если не было запросов, просто завершиться без вывода return # Формат 2: весь вход — последовательность названий seen = set() out = [] for name in lines: if name in seen: out.append("ДА") else: out.append("НЕТ") seen.add(name) print("\n".join(out)) if __name__ == "__main__": main() ``` Пояснения к выводу - В задаче обычно требуется выводить ДА, если название уже встречалось ранее, и НЕТ — если это новое название. - Пример из описания: первые четыре названия — новые, поэтому НЕТ (или НЕТ/НЕТ/НЕТ/НЕТ в зависимости от используемой надписи), пятые и шестые совпадают с ранее встречавшимися, поэтому ДА, ДА. - Обратите внимание: в вашем тестовом окружении возможно требование именно ДА/НЕТ или их русские аналоги. По умолчанию в коде выше используются ДА и НЕТ. Если хотите, могу адаптировать вывод под конкретный формат (например, точно "YES"/"NO" или другой набор слов).