Условие задачи | | Прогресс |
Темы:
Задачи на моделирование
Дата и время
На одном из московских вокзалов билеты продают N касс. Каждая касса работает без перерыва определенный промежуток времени по фиксированному расписанию (одному и тому же каждый день). Требуется определить, на протяжении какого времени в течение суток работают все кассы одновременно.
Входные данные
Сначала вводится одно целое число N (0 < N ≤ 1000).
В каждой из следующих N строк через пробел расположены 4 целых числа, первые два из которых обозначают время открытия кассы в часах и минутах (часы — целое число от 0 до 23, минуты — целое число от 0 до 59), оставшиеся два — время закрытия в том же формате. Числа разделены пробелами.
Время открытия означает, что в соответствующую ему минуту касса уже работает, а время закрытия — что в соответствующую минуту касса уже не работает. Например, касса, открытая с 10 ч. 30 мин. до 18 ч. 30 мин., ежесуточно работает 480 минут.
Если время открытия совпадает с временем закрытия, то касса работает круглосуточно. Если первое время больше второго, то касса начинает работу до полуночи, а заканчивает — на следующий день.
Выходные данные
Требуется вывести одно число — суммарное время за сутки (в минутах), на протяжении которого работают все N касс.
Примеры
№ |
Входные данные |
Выходные данные |
Пояснения |
1 |
3
1 0 23 0
12 0 12 0
22 0 2 0 |
120 |
Первая касса работает с часу до 23 часов, вторая – круглосуточно, третья – с 22 часов до 2 часов ночи следующего дня. Таким образом, все три кассы одновременно работают с 22 до 23 часов и с часу до двух часов, то есть 120 минут. |
2 |
2
9 30 14 0
14 15 21 0 |
0 |
Первая касса работает до 14 часов, а вторая начинает работать в 14 часов 15 минут, то есть одновременно кассы не работают. |
3 |
2
14 00 18 00
10 00 14 01 |
1 |
Вместе кассы работают лишь одну минуту – с 14:00 до 14:01 (в 14:01 вторая касса уже не работает). |
| |
|
Темы:
Условный оператор
Одномерные массивы
Дата и время
Перебор
Будильник в сотовом телефоне можно настроить так, чтобы он звонил каждый день в одно и то же время, либо в указанное время в определенный день недели. Независимо можно настроить несколько будильников.
По информации о будильниках и текущему времени и дню недели определите, когда прозвонит очередной будильник.
Входные данные
В первой строке вводятся три числа, задающие текущее время: день недели (от 1 до 7), часы и минуты.
Во второй строке вводится одно натуральное число N, не превосходящее 100 – количество будильников.
В следующих N строках вводятся описания N будильников. Описание каждого будильника состоит из трех чисел: дня недели (число от 1 до 7 для понедельника, …, воскресенья, соответственно, 0 – если будильник должен звонить каждый день), часов (от 0 до 23), минут (от 0 до 59).
Выходные данные
Выведите через пробел три числа, задающие день недели, часы и минуты, когда прозвонит ближайший будильник.
Примеры
№ |
Входные данные |
Выходные данные |
Пояснение |
1 |
2 10 20
2
1 23 15
0 10 10 |
3 10 10 |
|
2 |
7 1 1
3
7 0 59
7 23 59
7 1 1 |
7 1 1 |
Во втором примере третий будильник будет звенеть в начальный момент времени. |
| |
|
Темы:
Дата и время
Васе подарили два ежедневника на i-й год. Один он использовал в i-м году и теперь интересуется, когда наступит следующий год с точно таким же календарем, чтобы он мог воспользоваться вторым ежедневником.
Входные данные
Вводится одно натуральное число i, не превышающее 2011.
Выходные данные
Выведите одно число - номер года, когда можно будет использовать второй ежедневник.
Примеры
№ |
Входные данные |
Выходные данные |
1 |
2011 |
2022 |
2 |
1 |
7 |
| |
|
Темы:
Дата и время
Таня решила позвонить своей подруге, но вспомнила, что та живёт очень далеко, поэтому в часовом поясе подруги может быть слишком поздно или рано. Часы у Тани показывают ровно H часов, Таня живёт в часовом поясе с ними UTC+A, а её подруга – в часовом поясе UTC+B. Помогите Тане определить время в часовом поясе подруги в этот момент.
Программа получает на вход три целых числа H, A и B, 0 ≤ H ≤ 23, −11 ≤ A ≤ 12, −11 ≤ B ≤ 12.
В часовом поясе UTC+A местное время больше, чем время в часовом поясе UTC+0 на A часов (если же A < 0, то меньше на |A| часов). Например, если в часовом поясе UTC+0 сейчас 12 часов, то в часовом поясе UTC+1 – 13 часов, а в часовом поясе UTC−1 – 11 часов.
Программа должна вывести одно число – время (количество часов) в часовом поясе подруги.
Под временем в этой задаче подразумевается количество часов, которое может принимать значения от 0 до 23. При решении задачи обратите внимание, что в часовом поясе подруги может быть уже следующая дата или предыдущая дата, программа должна вывести количество часов на часах подруги в этот момент, то есть число от 0 до 23.
Примеры
№ |
Входные данные |
Выходные данные |
Пояснение |
1 |
15
3
-5 |
7 |
У Тани – 15 часов, она живёт в часовом поясе UTC+3. В часовом
поясе UTC+0 сейчас 12 часов. Подруга живёт в часовом поясе UTC−5,
и у неё сейчас 7 часов.
|
| |
|
Темы:
Массив констант
Дата и время
По заданному числу n от 1 до 365 определите, на какое число какого месяца приходится день невисокосного года с номером n .
Входные данные
Дано одно целое число n .
Выходные данные
Программа должна вывести два числа в одной строке через пробел: число месяца (от 1 до 31) и номер месяца (от 1 до 12), соответствующие дню с номером n .
Примеры
№ |
Входные данные |
Выходные данные |
1 |
1 |
1 1 |
2 |
90 |
31 3 |
| |
|
Темы:
Дата и время
Условный оператор
Строки
Таймер - это часы, которые умеют подавать звуковой сигнал по прошествии некоторого периода времени. Напишите программу, которая определяет, когда должен быть подан звуковой сигнал.
Входные данные:
В первой строке записано текущее время в формате ЧЧ:ММ:СС (с ведущими нулями). При этом оно удовлетворяет ограничениям: ЧЧ - от 00 до 23, ММ и СС - от 00 до 60.
Во второй строке записан интервал времени, который должен быть измерен. Интервал записывается в формате Ч:М:С (где Ч, М и С - от 0 до 109, без ведущих нулей). Дополнительно если Ч=0 (или Ч=0 и М=0), то они могут быть опущены. Например, 100:60 на самом деле означает 100 минут 60 секунд, что то же самое, что 101:0 или 1:41:0.
А 42 обозначает 42 секунды. 100:100:100 - 100 часов, 100 минут, 100 секунд, что то же самое, что 101:41:40.
Выходные данные:
В ответе выведите в формате ЧЧ:ММ:СС время, когда прозвучит звуковой сигнал. При этом если сигнал прозвучит не в текущие сутки, то дальше должна следовать запись +<кол-во> days . Например, если сигнал прозвучит на следующий день - то +1 days .
Примеры
№ |
Входные данные |
Выходные данные |
1 |
01:01:01
48:0:0
|
01:01:01+2 days |
2 |
01:01:01
58:119
|
02:01:00 |
3 |
23:59:59
1
|
00:00:00+1 days |
| |
|
Темы:
Дата и время
Строки
Неудовлетворенный стандартным календарем своей операционной системы, Витя решил написать программу, которая будет выводить красиво отформатированный календарь. Он разработал формальные требования к календарю, но понял, что сам не способен написать соответствующую программу. Помогите ему.
Календарь состоит из блоков, каждый из которых соответствует одному месяцу. Блоки расположены в виде таблицы из \(k\) столбцов и \(12/k\) строк (\(k\) выбирается делителем числа 12). Месяцы выводятся в следующем порядке: первая строка содержит блоки, соответствующие месяцам с первого по \(k\)-ый, следующая — с \((k + 1)\)-го по \(2k\)-ый, и т. д.
Ширина всех блоков в столбце должна быть одинакова, высота всех блоков равна семи (числу дней в неделе). Между блоками различных строк таблицы выводится пустая строка, в каждой строке между соседними блоками из разных столбцов выводится три пробела.
Блок, соответствующий месяцу, устроен следующим образом. Каждой (в том числе неполной) неделе данного месяца в блоке соответствует столбец, имеющий ширину равную двум. Между двумя соседними столбцами в каждой строке выводится один пробел. Если несколько блоков располагаются в одном столбце в календаре, то для выравнивания ширины в те блоки, которые содержат меньше недель, в конец добавляется необходимое число пустых столбцов-недель. При этом разные столбцы календаря могут иметь разную ширину.
Все числа месяца заносятся в блок, соответствующий этому месяцу. Число заносится в ту строку блока, которая соответствует дню недели, на который приходится число в этом месяце. Число заносится в столбец блока, соответствующий неделе, в которой находится данное число. Однозначные числа дополняются слева одним пробелом. Таким образом, числа в столбце оказываются выравнены по правому краю.
Формат входных данных
Входной файл содержит описание года, календарь для которого следует вывести — три числа: \(d\) — день недели, на который приходится первое января (\(1 \le d \le 7\)), \(l\) — является ли год високосным (\(l = 1\) означает, что год является високосными, \(l = 0\) — что не является) и \(k\) — количество столбцов в календаре (\(k\) — одно из чисел \(1, 2, 3, 4, 6, 12\)).
Напомним, что високосный год отличается от обычного тем, что в високосном году февраль содержит 29 дней.
Формат выходных данных
Выведите календарь, отформатированный как описано в условии задачи. Проверяющая программа в этой задаче игнорирует пробелы в конце строк. В остальном календарь должен быть отформатирован в точности в соответствии с условием.
Для наглядности в примере вместо пробелов выведены точки. Ваша программа должна выводить пробелы.
| |
|
Темы:
Битовые операции
Двумерные массивы
Дата и время
Циферблат новых электронных часов, установленных на главном здании офиса фирмы Macrohard, состоит из 4 прямоугольных панелей, каждая из которых состоит из 6 рядов по 5 лампочек в каждом. Первые две панели отображают цифры, из которых складываются часы, а следующие две - минуты. (Если сейчас меньше 10 часов, первая панель отображает 0).
К сожалению, лампочки, установленные на панелях, были произведены компанией Sveta.Net, которая известна своим принципом , вследствие чего на следующий день люди, проходя мимо офиса компании, видели лишь некоторое подобие цифр, поскольку некоторые лампочки больше не горели.
Петя живет в доме, стоящем прямо напротив офиса компании Macrohard. В первый день после установки часов он зарисовал у себя в блокноте, как выглядят все цифры на панелях (панели однотипные, поэтому одна и та же цифра на различных панелях выглядит одинаково). Теперь Петя хочет узнать, можно ли по текущему изображению на часах однозначно определить, сколько сейчас времени. Помогите ему!
Входные данные
Входные данные содержат 6 строк по 20 символов в каждой - текущее изображение на часах. Первый прямоугольник задает первую панель, следующий - вторую, следующий - третью и последний - четвертую.
Выходные данные
Если можно точно определить время, которое сейчас отображается на часах, выведите это время в формате hh:mm. Если время нельзя определить однозначно, выведите AMBIGUITY. Если же в часах точно сломалось еще что-то, например, центральный процессор, который управляет лампочками, выведите ERROR.
| |
|
Темы:
Массив констант
Дата и время
Заданы день и месяц рождения, а также текущие день, месяц и год. Определить, сколько дней осталось до дня рождения.
Примечание. Високосные годы - это те, номер которых делится на 400, а также те, номер которых делится на 4, но не делится на 100.
Входные данные
В первой строке находятся разделённые пробелами день и месяц рождения, во второй - разделённые пробелами текущие день, месяц и год. Год - от 1920 до 3000, месяц - от 1 до 12, день - от 1 до числа дней в месяце.
Выходные данные
Вывести число дней, оставшихся до дня рождения.
| |
|
Темы:
Перебор с отсечением
Дата и время
Вывод формулы
Парламент некоторой страны принял новый закон о праздничных днях. Согласно этому закону первые K дней года, а также 23 февраля (День олимпиады по информатике) и 8 марта объявляются праздничными, а все остальные праздники отменяются. При этом все выходные (суббота и воскресенье), попавшие на праздничные дни, переносятся на следующие за этими праздниками рабочие дни.
В зависимости от того, на какой день недели приходится 1 января, количество нерабочих дней, которые идут подряд, может меняться.
Требуется определить, какое наибольшее количество нерабочих дней может идти подряд.
Входные данные
На вход подается единственное число K (1≤K≤50).
Выходные данные
Требуется вывести единственное число — наибольшее количество нерабочих дней, идущих подряд.
| |
|
Темы:
Дата и время
Женя готовится к городским спортивным соревнованиям, где хочет показать себя самым сильным. Он тренируется по системе шаолиньских монахов. Тренировка должна состоять из N подходов, каждый из которых длится M минут и S секунд, между каждой парой подряд идущих подходов должен быть перерыв длительностью P секунд.
Помогите Жене определить, сколько всего времени займёт тренировка.
Формат входных данных
Первая строка содержит целое число N (1 ≤ N ≤ 100) — количество подходов.
Вторая строка содержит целое число M (0 ≤ M ≤ 59) — количество минут в одном подходе.
Третья строка содержит целое число S (0 ≤ S ≤ 59) — количество секунд в одном подходе.
Четвёртая строка содержит целое число P (0 ≤ P ≤ 120) — длительность паузы между подходами, выраженная в секундах.
Гарантируется, что один подход занимает ненулевое время.
Формат выходных данных
Выведите два целых числа — продолжительность тренировки в минутах и секундах. Первое число должно быть равно количеству полных минут в тренировке. Второе число — количеству секунд в тренировке, находящемуся в диапазоне от 0 до 59 включительно.
Замечание
В примере из условия Жене нужно выполнить 4 подхода, каждый из которых имеет длительность 3 минуты 24 секунды. При этом между походами у него будет 3 перерыва, каждый из которых имеет длительность 70 секунд. Следовательно, вся тренировка займёт 17 минут и 6 секунд.
| |
|
ID 65794.
3
Темы:
Дата и время
Коля – мальчик с очень принципиальными взглядами на некоторые вещи в своей жизни. Один из таких взглядов – это выбор времени, на которое он поставит будильник. Он каждый раз заранее знает в какой промежуток времени ему нужно завести будильник, дальше он поминутно расписывает все возможные варианты из диапазона на которое может поставить будильник и начинает оценивать каждое время по некоторым правилам и начислять баллы (за каждый пункт время получает +1 балл):
- если число минут представляет собой простое число;
- если он поспит с момента засыпания до пробуждения минимум 5циклов сна, где 1 цикл равен 90 минутам;
- если сумма цифр часа и минут пробуждения нечётное число(10:02 = 1+0+0+2 = 3);
- если сумма цифр в троичной системе счисления суммы цифрколичества минут представляет собой простое число (10:05 -> 0+5 = 5 переводим в 3 СС = 12 -> 1 + 2 = 3).
После оценки каждого времени Коля выбирает времена, которые набрали наибольшее количество баллов по его правилам и выбирает самое позднее из них.
Коля давно мечтает написать программу, которая будет сама оценивать самое подходящее для него время пробуждения, потому он попросил вас помочь ему в этом.
Формат входных данных
На первой строке задано время в формате hh:mm (например, 02:05), когда Коля ляжет спать.
На второй строке задан диапазон, когда Коле нужно проснуться. Диапазон задан в виде двух наборов времени hh:mm через тире, притом первое время всегда меньше или равно второму.
Формат выходных данных
Выведите на первой строке в формате hh:mm (с нулями) время, на которое Коле стоит завести будильник.
Примечание
- время засыпания Коли в диапазоне от 22:00 до 03:59;
- время на которое Коля ставит будильник в диапазоне от 04:00 до13:00.
| |
|
Темы:
Дата и время
Маша работает в очень крупной IT-компании, притом полностью удалённо. Маша поняла, что сидячая работа – это очень тяжело, поэтому прикупила себе недорогой гребной тренажёр. Но так как тренажёр недорогой, то Маша прочитав инструкцию поняла, что он имеет ограничения по времени работы и простоя. Таким образом, на тренажёре можно заниматься только 20 минут максимум, а потом нужно чтобы тренажёр «отдыхал» минимум 10 минут.
Маша решила посчитать, сколько минут она сможет прозаниматься на тренажёре за день, если будет знать все свои промежутки времени, когда она не может заниматься на тренажёре 100%.
Работает Маша с 10:00 по 19:00, потому в подсчёт идёт только время проведённое на тренажёре именно в этот промежуток времени.
Формат входных данных
На вход на первой строке подаётся число N (1<=N<=1000) – количество занятых промежуток Маши.
Далее на N строках указываются промежутки в виде времени начала и времени конца занятого времени в формате h:mm-h:mm (например, 9:12-9:20) в хронологическом порядке.
Формат выходных данных
Выведите на одной строке количество минут, которые Маша проведёт на тренажёре в этот день, если она будет заниматься сразу же, как тренажёр «отдохнул».
Примечание: если тренажёр включили меньше чем на 20 минут, то на отдых ему требуется также 10 минут.
| |
|