Задача D. Водонагреватель
Осень — время, когда часто отключают свет . Впрочем, дома у Илимбека имеется водонагреватель накопительного типа, так что по поводу отключений он переживает не очень сильно.
Включив водонагреватель, Илимбек считает правильным дождаться его полного нагрева. Для
этого требуется k минут, при этом каждую минуту водонагреватель потребляет w ватт.
Дома у Илимбека установлен двухфазный счетчик электроэнергии. Согласно тарифам, начиная
с момента времени h1 часов m1 минут и до момента времени h2 часов m2 минут, электроэнергия
обходится в p тыйын за ватт, а в остальное время — в q тыйын за ватт.
Илимбек включил водонагреватель в момент времени s часов u минут. Ваша задача — определить, сколько (в тыйынах) будет стоить полный нагрев.
Формат входных данных
В первой строке содержится целое число k (1 6 k 6 106) — время (в минутах), необходимое для
полного нагрева водонагревателя.
Во второй строке содержится целое число w (1 6 w 6 106) — количество ватт, потребляемое
водонагревателем в минуту.
В третьей строке содержится целое число p (1 6 p 6 106) — стоимость ватта согласно первому
тарифу.
В четвёртой строке содержится целое число q (1 6 q 6 106) — стоимость ватта согласно второму
тарифу.
В пятой строке содержится целое число h1 (0 6 h1 6 23), а в шестой строке содержится целое
число m1 (0 6 m1 6 59) — час и минута, в которые начинает действовать тариф в p тыйын за ватт.
В седьмой строке содержится целое число h2 (0 6 h2 6 23), а в восьмой строке содержится целое
число m2 (0 6 m2 6 59) — час и минута, в которые начинает действовать тариф в q тыйын за ватт.
В девятой строке содержится целое число s (0 6 s 6 23), а в десятой строке содержится целое
число u (0 6 u 6 59) — час и минута, в которые Илимбек включает водонагреватель.
Формат выходных данных
Выведите единственное целое число — сумму (в тыйынах), в которую обойдется полный нагрев
водонагревателя.
Ответы
Ответ:
def get_cost(s, u, h1, m1, h2, m2, p, q):
cost = 0
for i in range(k):
hour = (s + i + u) // 60
minute = (s + i + u) % 60
if (hour >= h1 and minute >= m1) or (hour <= h2 and minute <= m2):
cost += p
else:
cost += q
return cost * w
k = int(input().strip())
w = int(input().strip())
p = int(input().strip())
q = int(input().strip())
h1 = int(input().strip())
m1 = int(input().strip())
h2 = int(input().strip())
m2 = int(input().strip())
s = int(input().strip())
u = int(input().strip())
print(get_cost(s, u, h1, m1, h2, m2, p, q))
Объяснение:
В этом решении используется цикл for для перебора k минут времени нагрева, и для каждой минуты он вычисляет час и минуту текущего времени путем деления и получения модуля общего прошедшего времени. Затем он проверяет, находится ли текущее время в диапазоне, указанном h1, m1, h2 и m2, и добавляет к стоимости p или q в зависимости от результата этой проверки. Наконец, функция возвращает общую стоимость, умножая стоимость минуты на количество минут.