ТГ бот

Задача №303. Коровы. По данному числу n закончите фразу "На лугу пасется..."…

Информатика7 классРешено по фото 13 октября 2026 в 15:20
№ Коровы: выбор формы слова

Задача №303. Коровы. По данному числу n закончите фразу "На лугу пасется..." одним из возможных продолжений: "n коров", "n корова", "n коровы", правильно склоняя слово "корова".

Входные данные: Дано число n (n<100).

Выходные данные: Программа должна вывести введенное число n и одно из слов (на латинице): korov, korova или korovy, например, 1 korova, 2 korovy, 5 korov. Между числом и словом должен стоять ровно один пробел.

Пример: входные данные — 1; выходные данные — 1 korova

Решение

Алгоритм.

  1. Прочитать n.
  2. Найти последнюю цифру и число десятков-единиц . Так как n < , , но запись делает программу верной и для больших чисел.
  3. Если , слово — korov ( korov, korov, korov, korov).
  4. Иначе, если , слово — korova.
  5. Иначе, если равна , или , слово — korovy.
  6. Иначе (, , , , , ) слово — korov.
  7. Вывести n и слово через один пробел.

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

n = int(input())
d = n % 
t = n % 
if  <= t <= :
    word = "korov"
elif d == :
    word = "korova"
elif  <= d <= :
    word = "korovy"
else:
    word = "korov"
print(n, word)

Проверка: при n = получаем korova; при n = получаем korovy; при n = получаем korov; при n = получаем korov; при n = получаем korova.

💡 Почему так

Окончание слова зависит от последней цифры, но числа – — исключение: для них всегда korov.

Ответ
✓ dzmen.ru
n = int(input())
d = n % 
t = n % 
if  <= t <= :
    word = "korov"
elif d == :
    word = "korova"
elif  <= d <= :
    word = "korovy"
else:
    word = "korov"
print(n, word)
№ Билеты на метро: минимальная стоимость

Задача №304. Билеты на метро. Билет на одну поездку в метро стоит 15 рублей, билет на 10 поездок стоит 125 рублей, билет на 60 поездок стоит 440 рублей. Пассажир планирует совершить n поездок.

Определите, сколько билетов каждого вида он должен приобрести, чтобы суммарное количество оплаченных поездок было не меньше n, а общая стоимость приобретенных билетов – минимальна.

Входные данные: Дано одно число n – количество поездок.

Выходные данные: Выведите три целых числа, равные необходимому количеству билетов на 1, на 10, на 60 поездок.

Пример: входные данные — 129; выходные данные — 0 1 2

Решение

Идея. Цена одной поездки: по билету на — руб., на — руб., на — руб. Значит, билет на поездок выгоднее всего, на — следующий по выгодности.

Алгоритм.

  1. Прочитать n.
  2. Количество билетов на поездок равно либо (остаток добираем мелкими билетами), либо (покрываем остаток ещё одним большим билетом). Меньше брать невыгодно: замена поездок мелкими билетами стоит не меньше руб.
  3. Для каждого такого количества c найти остаток  .
  4. Для остатка r перебрать количество билетов на поездок c от до ; оставшиеся поездки покрыть билетами на поездку:  .
  5. Посчитать стоимость и запомнить вариант с минимальной стоимостью.
  6. Вывести c, c, c.

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

n = int(input())
best = None
best_cost = None
for c in (n // , n //  + ):
    r = max(, n -  * c)
    for c in range(, r //  + ):
        c = max(, r -  * c)
        cost =  * c +  * c +  * c
        if best_cost is None or cost < best_cost:
            best_cost = cost
            best = (c, c, c)
print(best[], best[], best[])

Проверка для n = :

  • , остаток : девять билетов на поездку стоят , один билет на поездок стоит . Лучше взять один на : руб.
  • : руб.

Минимум руб., ответ: .

💡 Почему так

Это задача на перебор с отсечением: достаточно проверить только выгодные количества билетов, потому что более «оптовые» билеты дешевле в расчёте на одну поездку.

Ответ
✓ dzmen.ru
n = int(input())
best = None
best_cost = None
for c in (n // , n //  + ):
    r = max(, n -  * c)
    for c in range(, r //  + ):
        c = max(, r -  * c)
        cost =  * c +  * c +  * c
        if best_cost is None or cost < best_cost:
            best_cost = cost
            best = (c, c, c)
print(best[], best[], best[])
Помогло?

Есть ещё задание?Сфоткай, и ДЗмэн решит за пару секунд.

Решить по фото