Задача про часы, почему решается именно так?
2 день изучаю Питон и наткнулся на такую задачку:
Дано число n. С начала суток прошло n минут. Определите, сколько часов и минут будут показывать электронные часы в этот момент. Программа должна вывести два числа: количество часов (от 0 до 23) и количество минут (от 0 до 59). Учтите, что число n может быть больше, чем количество минут в сутках.
Вот решение
n = int(input())
hours = n % (60 * 24) // 60
minutes = n % 60
print(hours, minutes)
Можете мне объяснить самое решение, а то я не понимаю строчку hours = n % (60 * 24) // 60. Почему применяется деление с остатком, почему применяется деление без остатка?
Ответы (2 шт):
В условиях задачи есть предупреждение, о том что на вход может быть подано количество минут большее чем содержится в сутках.
В одном часе 60
минут, в сутках 24
часа, (60 * 24) = 1440
минут в сутках.
Если на вход получено число 2440
- это 1
день, 16
часов, 40
минут.
Обратите внимание, что на ваших часах дни не отображаются!
Следовательно, Вам надо уменьшить n
на количество минут кратное 1440
.
В этой строке hours = n % (60 * 24) // 60
:
- получаете остаток от деления n на 1440 -
n % 1440 = 1000
- целочисленным делением
1000 // 60 = 16
получаете часы.
n = int(input())
hours = n // 60
minutes = n % 60
print(hours, minutes)
// - это целочисленное деление n // 60 - количество целых часов (60 минут) % - получение остатка от деленияn n % 60 - остаток минут (< 60)