
Для того чтобы компы поддерживали актуальное время, они могут обращаться к серверам точного времени
SNTP. К сожалению комп не может просто получить время у сервера,потому что информация по сети передается не мгновенно;пока сообщение с текущим временем дойдет до компа,оно потеряет свою актуальность . Протокол взаймодействия клиента выглядит 1)Клиент отправляет запрос на сервер и запоминает вреия отправления A. 2)Сервер получает запрос в момент времени B и отправляет клиенту сообщение содержащее время B 3)Клиент получает ответ на свой запрос в момент вреиени C и запоминает его. Теперь клиент, из предположения,что сетевые задержки при передаче сообщений от клиента серверу и от сервера клиенту одинаковы может определить и установить себе точное время используя известные значения A,B,C. Ваи предстоит реализовать алогритм с точностью до скенунды определяющий точное время для установки на клиенте по известным A,B и C. При необходимости округлите резултат до целого числа секунд по правилам арифметики. Возможно что пока клиент ожидал ответа по клиентскому времени успели наступить новые сутки однако известно,что между отправкой клиентом запроса и получением ответа от сервера прошло менее 24 часов. Прграииа получает на вход три времменные метки A,B,C по одной в каждой строке.Все временные метки представлены в формате hh:mm:ss, где hh-это часы, mm-это минуты, ss-cеукнды.Часы,минуты и секунды записываются ровно двуия цифрами каждоею Программа должна вывести одну врмменную метку в формате,описаннои во входных данных-выичсленное точное время для установки на клиенте. В выводе не должно быть пробелов,пустых строк в начале вывода.

Ответы на вопрос

def timestamp_to_time(timestamp):
seconds = 0
for token in timestamp.split(":"):
seconds = seconds * 60 + int(token)
return seconds
def time_to_timestamp(time):
seconds = time % 60
time //= 60
minutes = time % 60
time //= 60
hours = time % 24
return "{:02d}:{:02d}:{:02d}".format(hours, minutes, seconds)
A = timestamp_to_time(input())
B = timestamp_to_time(input())
C = timestamp_to_time(input())
if C < A:
C += timestamp_to_time("24:00:00")
t = (C - A + 1) // 2
current_time = B + t
print(time_to_timestamp(current_time))
Пример ввода:
23:59:59
01:00:51
00:00:20
Пример вывода:
01:01:02



Для того, чтобы компьютеры поддерживали актуальное время, они могут обращаться к серверам точного времени SNTP. К сожалению, компьютер не может просто получить время у сервера, потому что информация по сети передается не мгновенно; пока сообщение с текущим временем дойдет до компьютера, оно потеряет свою актуальность. Протокол взаимодействия клиента выглядит следующим образом:
1) Клиент отправляет запрос на сервер и запоминает время отправления A. 2) Сервер получает запрос в момент времени B и отправляет клиенту сообщение, содержащее время B. 3) Клиент получает ответ на свой запрос в момент времени C и запоминает его.
Теперь клиент, из предположения, что сетевые задержки при передаче сообщений от клиента серверу и от сервера клиенту одинаковы, может определить и установить себе точное время, используя известные значения A, B и C.
Для реализации алгоритма с точностью до секунды определяющего точное время для установки на клиенте по известным A, B и C, можно использовать следующий подход:
1. Вычислить разницу между временем получения ответа от сервера (C) и временем отправки запроса на сервер (A). 2. Вычислить разницу между временем получения ответа от сервера (C) и временем получения запроса сервером (B). 3. Найти среднее значение этих двух разниц. 4. Применить это среднее значение к времени получения ответа от сервера (C), чтобы получить точное время для установки на клиенте.
Программа, реализующая этот алгоритм, должна получать на вход три временные метки A, B, C и выводить вычисленное точное время для установки на клиенте. Вывод должен быть в формате hh:mm:ss, где hh - часы, mm - минуты, ss - секунды. Часы, минуты и секунды должны записываться ровно двумя цифрами каждое. В выводе не должно быть пробелов или пустых строк в начале вывода.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili