Задача про часы, почему решается именно так?

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 шт):

Автор решения: AnnaBazueva

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

В одном часе 60 минут, в сутках 24 часа, (60 * 24) = 1440 минут в сутках.

Если на вход получено число 2440 - это 1 день, 16 часов, 40 минут.

Обратите внимание, что на ваших часах дни не отображаются!

Следовательно, Вам надо уменьшить n на количество минут кратное 1440.

В этой строке hours = n % (60 * 24) // 60:

  1. получаете остаток от деления n на 1440 - n % 1440 = 1000
  2. целочисленным делением 1000 // 60 = 16 получаете часы.
→ Ссылка
Автор решения: Краева Екатерина
n = int(input())
hours = n // 60
minutes = n % 60
print(hours, minutes)

// - это целочисленное деление n // 60 - количество целых часов (60 минут) % - получение остатка от деленияn n % 60 - остаток минут (< 60)

→ Ссылка