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

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

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

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

Вопрос от Анонимного юзера 25 февраля 2026 17:34

Задача №4 «Подарок лепрекона» Маленький зелёный человечек за добрые дела может отблагодарить скромным серебряным шиллингом, который будет возвращаться к владельцу, а жадине может подарить золотой, который скоро превратится в кусок коры или рассыплется пеплом. Напиши программу для определения подарка от лепрекона. Формат ввода Вводятся строки: "добрый", "злой" или "Какой подарок?", пока не будет введена пустая строка. Формат вывода Считается количество введённых строк разного типа и на вопрос о подарке выводится ответ. Если строк "добрый" было больше, чем строк "злой", а последняя строка "добрый", то подарок — серебряный шиллинг. Если больше было строк "злой" и такая же последняя введённая, то подарок — золотой. Если вопрос задан при неопределённом значении подарка, выводится: "Ах, не знаю!" и программа завершает работу. После каждого вопроса строки считаются заново. headerless ||| |:---|:---| | Ввод | Вывод | |добрый добрый добрый злой добрый злой добрый Какой подарок? злой добрый злой злой добрый Какой подарок? добрый добрый |серебряный шиллинг Ах, не знаю! |

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

25 февраля 2026 17:34

Задача называется “Задача №4 «Подарок лепрекона»”. Цель — понять логику определения подарка по последовательности строк и последнему введённому значению.

Краткий план решения

  • Мы держим счётчики для двух вариантов подарков:
    • добрый_count — сколько встречалось "добрый"
    • злой_count — сколько встречалось "злой"
  • Также запоминаем последнюю введённую строку типа героя: last_type, которая может быть "добрый", "злой" или None.
  • Ввод идёт до пустой строки. На каждую строку:
    • если строка "добрый" или "злой" — увеличиваем соответствующий счётчик и обновляем last_type.
    • если строка "Какой подарок?" — вычисляем подарок по правилам:
      • если добрый_count > злой_count и last_type == "добрый" → подарок серебряный шиллинг.
      • иначе, если злой_count > добрый_count и last_type == "злой" → подарок золотой.
      • иначе → "Ах, не знаю!" и программа завершается.
    • После вывода подарка (серебряный шиллинг или золотой) или сообщения об неопределённости — счётчики и last_type обнуляются и продолжаем чтение с чистого листа.
  • Порядок и условия строго соответствуют описанию: после каждого вопроса счётчики сбрасываются.

Пошаговый алгоритм

  1. Инициализируем: добрый_count = 0, злой_count = 0, last_type = None.
  2. Читаем ввод строк по одной, пока не встретится пустая строка.
  3. Если строка равна "добрый" или "злой":
    • увеличить соответствующий счётчик;
    • установить last_type в "добрый" или "злой".
  4. Если строка равна "Какой подарок?":
    • если добрый_count > злой_count и last_type == "добрый" → вывести "серебряный шиллинг" и сбросить счётчики и last_type.
    • else если злой_count > добрый_count и last_type == "злой" → вывести "золотой" и сбросить счётчики и last_type.
    • иначе вывести "Ах, не знаю!" и завершить программу.
  5. Повторяем шаги 2–4 до пустой строки.

Сложность

  • Временная: O(n), где n — количество введённых строк.
  • Пространство: O(1) для учёта счётчиков и последнего типа (последовательности не требуют хранения всего ввода).

Пример реализации на Python

  • Важно: вывод должен точно соответствовать заданным строкам, включая регистр и пробелы.

Программа (Python)

def main(): import sys

добрый_count = 0
злой_count = 0
last_type = None  # может быть "добрый" или "злой"

for raw in sys.stdin:
    s = raw.strip()
    if s == "":
        break  # пустая строка завершает ввод

    if s == "Какой подарок?":
        if добрый_count > злой_count and last_type == "добрый":
            print("серебряный шиллинг")
        elif злой_count > добрый_count and last_type == "злой":
            print("золотой")
        else:
            print("Ах, не знаю!")
            return
        # после вопроса — учёт начинается заново
        добрый_count = 0
        злой_count = 0
        last_type = None
    elif s == "добрый" or s == "злой":
        if s == "добрый":
            добрый_count += 1
        else:
            злой_count += 1
        last_type = s
    # если пришла какая-то посторонняя строка, можно игнорировать или завершить с ошибкой.
    # здесь игнорируем не ожидаемые строки.

if name == "main": main()

Как пользоваться

  • Запустите программу и подайте строки по одному в стандартный вход:
    • добрый
    • злой
    • добрый
    • Какой подарок?
    • злой
    • добрый
    • злой
    • злой
    • добрый
    • Какой подарок?
    • добрый
    • добрый
    • [пустая строка]
  • Для первого кейса программа выведет "серебряный шиллинг".
  • После второго кейса — "Ах, не знаю!" и программа завершится.

Можно адаптировать решение под другие языки программирования (C++, Java, JavaScript и т.д.) по той же логике: поддерживайте счётчики, сохраняйте последнюю строку типа героя, обрабатывайте запрос "Какой подарок?" согласно трём условиям и сбрасывайте счётчики после каждого запроса.

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

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

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

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

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

qr-codegoogle-playapp-store

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

Задача №4 «Подарок лепрекона» Маленький зелёный человечек за добрые дела может отблагодарить скромным серебряным шиллингом, который будет возвращаться к владельцу, а жадине может подарить золотой, который скоро превратится в кусок коры или рассыплется пеплом. Напиши программу для определения подарка от лепрекона. Формат ввода Вводятся строки: "добрый", "злой" или "Какой подарок?", пока не будет введена пустая строка. Формат вывода Считается количество введённых строк разного типа и на вопрос о подарке выводится ответ. Если строк "добрый" было больше, чем строк "злой", а последняя строка "добрый", то подарок — серебряный шиллинг. Если больше было строк "злой" и такая же последняя введённая, то подарок — золотой. Если вопрос задан при неопределённом значении подарка, выводится: "Ах, не знаю!" и программа завершает работу. После каждого вопроса строки считаются заново. headerless ||| |:---|:---| | Ввод | Вывод | |добрый добрый добрый злой добрый злой добрый Какой подарок? злой добрый злой злой добрый Какой подарок? добрый добрый |серебряный шиллинг Ах, не знаю! |
Задача называется “Задача №4 «Подарок лепрекона»”. Цель — понять логику определения подарка по последовательности строк и последнему введённому значению. Краткий план решения - Мы держим счётчики для двух вариантов подарков: - добрый_count — сколько встречалось "добрый" - злой_count — сколько встречалось "злой" - Также запоминаем последнюю введённую строку типа героя: last_type, которая может быть "добрый", "злой" или None. - Ввод идёт до пустой строки. На каждую строку: - если строка "добрый" или "злой" — увеличиваем соответствующий счётчик и обновляем last_type. - если строка "Какой подарок?" — вычисляем подарок по правилам: - если добрый_count > злой_count и last_type == "добрый" → подарок серебряный шиллинг. - иначе, если злой_count > добрый_count и last_type == "злой" → подарок золотой. - иначе → "Ах, не знаю!" и программа завершается. - После вывода подарка (серебряный шиллинг или золотой) или сообщения об неопределённости — счётчики и last_type обнуляются и продолжаем чтение с чистого листа. - Порядок и условия строго соответствуют описанию: после каждого вопроса счётчики сбрасываются. Пошаговый алгоритм 1) Инициализируем: добрый_count = 0, злой_count = 0, last_type = None. 2) Читаем ввод строк по одной, пока не встретится пустая строка. 3) Если строка равна "добрый" или "злой": - увеличить соответствующий счётчик; - установить last_type в "добрый" или "злой". 4) Если строка равна "Какой подарок?": - если добрый_count > злой_count и last_type == "добрый" → вывести "серебряный шиллинг" и сбросить счётчики и last_type. - else если злой_count > добрый_count и last_type == "злой" → вывести "золотой" и сбросить счётчики и last_type. - иначе вывести "Ах, не знаю!" и завершить программу. 5) Повторяем шаги 2–4 до пустой строки. Сложность - Временная: O(n), где n — количество введённых строк. - Пространство: O(1) для учёта счётчиков и последнего типа (последовательности не требуют хранения всего ввода). Пример реализации на Python - Важно: вывод должен точно соответствовать заданным строкам, включая регистр и пробелы. Программа (Python) def main(): import sys добрый_count = 0 злой_count = 0 last_type = None # может быть "добрый" или "злой" for raw in sys.stdin: s = raw.strip() if s == "": break # пустая строка завершает ввод if s == "Какой подарок?": if добрый_count > злой_count and last_type == "добрый": print("серебряный шиллинг") elif злой_count > добрый_count and last_type == "злой": print("золотой") else: print("Ах, не знаю!") return # после вопроса — учёт начинается заново добрый_count = 0 злой_count = 0 last_type = None elif s == "добрый" or s == "злой": if s == "добрый": добрый_count += 1 else: злой_count += 1 last_type = s # если пришла какая-то посторонняя строка, можно игнорировать или завершить с ошибкой. # здесь игнорируем не ожидаемые строки. if __name__ == "__main__": main() Как пользоваться - Запустите программу и подайте строки по одному в стандартный вход: - добрый - злой - добрый - Какой подарок? - злой - добрый - злой - злой - добрый - Какой подарок? - добрый - добрый - [пустая строка] - Для первого кейса программа выведет "серебряный шиллинг". - После второго кейса — "Ах, не знаю!" и программа завершится. Можно адаптировать решение под другие языки программирования (C++, Java, JavaScript и т.д.) по той же логике: поддерживайте счётчики, сохраняйте последнюю строку типа героя, обрабатывайте запрос "Какой подарок?" согласно трём условиям и сбрасывайте счётчики после каждого запроса.