Решение номера 7416 ФИПИ

На вход программе подаются сведения о ячейках автоматической камеры хранения багажа. В первой строке задана текущая дата: через точку два целых числа, соответствующие дню (от 01 до 31 – ровно 2 символа) и месяцу (от 01 до 12 – ровно 2 символа). Во второй строке сообщается количество занятых ячеек N, которое не меньше 3, но не превосходит 1000. Каждая из следующих N строк имеет следующий формат: <номер ячейки> <дата сдачи багажа>, где <номер ячейки> – четырехзначное число, <дата сдачи багажа> – через точку два целых числа, соответствующие дню (от 01 до 31 – ровно 2 символа) и месяцу (от 01 до 12 – ровно 2 символа). Номер ячейки и дата сдачи багажа разделены одним пробелом.

 

Время хранения багажа не более трёх суток. Требуется написать эффективную программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая выведет номера ячеек, в которых багаж хранится именно трое суток, т.е. разница между датой сдачи багажа и текущей датой составляет три дня. Номера ячеек следует выводить в порядке возрастания.

 

Багаж мог сдаваться не ранее чем за три дня до текущей даты. Если дата сдачи багажа больше, чем текущая, то это означает, что багаж был сдан в прошлом году (такая ситуация возможна, только если текущий месяц – январь, а багаж был сдан в декабре). Количество дней в каждом из месяцев года следующее: январь – 31, февраль – 28, март – 31, апрель – 30, май – 31, июнь – 30, июль – 31, август – 31, сентябрь – 30, октябрь – 31, ноябрь – 30, декабрь – 31. Все входные данные корректны.

 

Пример входных данных:

03.01

3

2000 01.01

1001 31.12

1007 02.01

 

Результат работы программы для этого примера:

1001

 

Объяснение

В условии сказано, что багаж мог сдаваться не ранее чем за три дня, значит нам нужно всего лишь узнать день, в который сдали багаж (если сдавали 03.01, то 31, если сдавали 02.03, то 27 и т.д.). Нам остается узнать был ли сдан багаж в прошлом месяце и, если да, то узнать какой это был день, в противном случае просто вычесть 3 из текущей даты, эту дату запишем в отдельную переменную (day_x). Теперь при вводе очередного значения, сравниваем его день с day_x и, если они равны, то записываем номер ячейки в отдельный массив. В конце ввода данных сортируем массив и выводим его в порядке возрастания

 

Решение на языке Pascal

Показать решение

 

Решения на языке Python

Показать решение

 

Похожие задачи: 7448

Оставить комментарий