2 / 2 / 0
Регистрация: 22.04.2018
Сообщений: 18
|
||||||||||||||||||||||||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||||||||||||||||||||||||
Задача "Часы с боем" , Python22.04.2018, 22:15. Показов 12859. Ответов 16
Метки нет (Все метки)
Здравствуйте! Вчера на отборочном туре я неудачно пыталась решить задачу "Часы с боем". На её решение потратила очень много времени и не решила ни её, ни большинство других задач. И очень расстроилась.
Условие такое: Старинные часы бьют каждые полчаса. Причем в начале каждого часа они бьют столько раз, сколько сейчас часов (по 1 разу – в час ночи и в час дня, по 2 раза – в два часа ночи в два часа дня и т.д., в полночь и в полдень они бьют, соответственно, по 12 раз). И еще 1 раз они бьют в середине каждого часа. Дан промежуток времени. Известно, что прошло строго меньше 24 часов (но при этом могли начаться новые сутки). Напишите программу, определяющую, сколько ударов сделали часы за это время. Формат ввода: В первой строке вводится начальный момент времени, во второй строке — конечный. Моменты времени задаются двумя целыми числами, разделяющимися пробелом. Первое число задает часы (от 0 до 23), второе — минуты (от 1 до 59, при этом оно не равно 30). Формат вывода: Выведите одно число — сколько ударов сделали часы за этот отрезок времени. Примечание: Заметьте, что время в задаче задается в 24-часовой форме записи, в то время как часы показывают (и соответственно, бьют) в 12-часовом режиме (т.е., например, в 13 часов часы бьют 1 раз). Ограничение по времени: 1 секунда. Ограничение по памяти: 256 мегабайт. Примеры:
Моё не полное решение:
0
|
22.04.2018, 22:15 | |
Ответы с готовыми решениями:
16
Задача с олимпиады: Часы с боем Часы с боем(олимпиадная задача) Задача "Часы с боем" для школьников) Часы с боем |
37 / 36 / 16
Регистрация: 11.03.2018
Сообщений: 95
|
||||||
23.04.2018, 01:39 | 2 | |||||
Лучшего не получилось придумать, вообще не люблю задачи с часами
# 12 # 140 # 15 # 0 # 85 # 81 # 171 # 100 # 179
1
|
2 / 2 / 0
Регистрация: 22.04.2018
Сообщений: 18
|
|
23.04.2018, 15:05 [ТС] | 3 |
FilArt97,
Вау!!! Спасибо огромное!!! Буду сегодня изучать ваше решение.
0
|
Автоматизируй это!
|
||||||
23.04.2018, 18:24 | 4 | |||||
Yntra, вот вариант с функциями, тесты все проходят
1
|
2 / 2 / 0
Регистрация: 22.04.2018
Сообщений: 18
|
||||||
23.04.2018, 19:44 [ТС] | 5 | |||||
Welemir1,
Спасибо!!! Добавлено через 15 минут Пыталась сегодня доработать свой вариант со списком. Но опять неудача . Извиняюсь за обилие комментариев в программе, но они помогают мне не повторяться и не сбиваться. Осмелюсь предположить, что вариант решения со списками возможно будет изящнее.
0
|
Автоматизируй это!
|
|
24.04.2018, 08:06 | 6 |
вполне может быть, только сначала нужно рабочий вариант сделать, а потом добиться его изящества. А что за отборочный тур, где ты эту задачу нашла? на нее сколько то времени давалось?
0
|
2 / 2 / 0
Регистрация: 22.04.2018
Сообщений: 18
|
|
24.04.2018, 12:02 [ТС] | 7 |
Welemir1,
Это был отборочный тур в образовательный центр "Сириус", программа "Информатика юниоры". Всего было 8 задач, и эта задача "Старинные часы" - не самая сложная. 8 задач нужно было решить за 2ч. 30мин. Я решила всего две задачки. Нерешенные хочу тоже решить. Так как у меня нет пока навыков, решение занимает ну ооочень много времени.
0
|
2 / 2 / 0
Регистрация: 22.04.2018
Сообщений: 18
|
||||||
02.05.2018, 17:33 [ТС] | 8 | |||||
Вот и я решила эту задачку с помощью списков . Проходит 100% тестов . Интуиция подсказывала что я на верном пути,
но сообразить сразу не смогла. На форуме я видела, что "знатоки" свои решения оформляют в одну или несколько строк. Прошу вашей помощи: как записать мой код компактней?
0
|
672 / 475 / 215
Регистрация: 06.09.2013
Сообщений: 1,306
|
||||||
02.05.2018, 20:14 | 9 | |||||
Yntra,
1
|
2 / 2 / 0
Регистрация: 22.04.2018
Сообщений: 18
|
|
02.05.2018, 20:38 [ТС] | 10 |
woldemas,
Вау!!! Очень интересное решение!!!
0
|
672 / 475 / 215
Регистрация: 06.09.2013
Сообщений: 1,306
|
||||||
02.05.2018, 20:53 | 11 | |||||
Yntra, цикл лучше убрать, чтобы по-питоновски было, тогда еще меньше строк
1
|
2 / 2 / 0
Регистрация: 22.04.2018
Сообщений: 18
|
|
02.05.2018, 21:04 [ТС] | 12 |
woldemas,
С ума сойти !!! Я тоже так хочу налету решать . Спасибочки, буду изучать
0
|
636 / 476 / 179
Регистрация: 28.05.2012
Сообщений: 1,414
|
|
03.05.2018, 05:02 | 13 |
0
|
2 / 2 / 0
Регистрация: 22.04.2018
Сообщений: 18
|
|
03.05.2018, 16:55 [ТС] | 15 |
woldemas !!!
Как вы подсчитали "удары каждые полчаса" - просто чума с True False !!! sum(map(lambda... - пока не поняла как работает
0
|
672 / 475 / 215
Регистрация: 06.09.2013
Сообщений: 1,306
|
||||||
03.05.2018, 17:19 | 16 | |||||
Это тоже самое, что выше я в цикле писал:
sum просто более короткая запись всего этого цикла.range(h_start + 1, h_end + 1) - диапазон часов, в которые будет битьmap(lambda h : 12 if h in {12, 24} else h % 12, range(h_start + 1, h_end + 1)) - просчитать для каждого часа из диапазона количество ударов и сформировать соответствующую последовательность sum(map(...)) - найти суммарное количество ударов (сумма последовательности, сформированной на предыдщем этапе
1
|
2 / 2 / 0
Регистрация: 22.04.2018
Сообщений: 18
|
|
03.05.2018, 18:31 [ТС] | 17 |
woldemas!
Спасибо за объяснение!
0
|
03.05.2018, 18:31 | |
03.05.2018, 18:31 | |
Помогаю со студенческими работами здесь
17
Часы с боем Часы с боем пробивают каждый час такое количество ударов Задача о 3 ферзях и 2 ладьях: найти такие позиции, чтобы все поля оказались под боем Цифровые часы на python Задача 2. Старинные часы Задача про часы Задача 3. Красочные часы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |