Решение: Подсчёт финалистов забега
На соревнованиях по бегу на 5000 метров для выхода в финал необходимо показать время не более 18 минут 30 секунд.
Сколько спортсменов по результатам соревнований вышли в финал?
Программа получает на вход количество спортсменов, принимавших участие в соревнованиях ($1 \leq N \leq 100$), затем для каждого спортсмена вводятся два числа: минуты и секунды — время, показанное на дистанции.
Пример входных данных:
2
17 15
19 20
Пример выходных данных:
1
Решение по шагам
4 шагаПереведём предельное время в секунды:
$$18 \cdot 60 + 30 = 1110$$Для каждого спортсмена переведём его результат в секунды по формуле:
$$t = 60m + s$$Если время спортсмена не больше 1110 секунд, увеличим количество финалистов на единицу.
После обработки всех спортсменов выведем полученное количество.
n = int(input())
count = 0
for _ in range(n):
minutes, seconds = map(int, input().split())
if minutes * 60 + seconds <= 18 * 60 + 30:
count += 1
print(count)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Используют условие строго меньше вместо условия «не более», то есть не учитывают результат ровно 18 минут 30 секунд.
Сравнивают отдельно минуты и секунды, не переводя время в единую величину.
Забывают увеличить счётчик или вывести его после завершения цикла.