ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
Версия для печати
Убрать все задачи Современные системы управления базами данных поддерживают широкий класс различных операций с датами. Для решения этой задачи Вы должны написать программу, реализующую некоторые из таких операций. Ваша программа должна обрабатывать выражения следующих типов: <Дата> <Дата> + <Сдвиг> <Дата> - <Сдвиг> <Дата> - <Дата> Здесь <Дата> задается в одном из следующих трех форматов: А) дд.мм.гггг (например, 21.06.1998 ). В этой записи день и месяц задаются в точности двумя десятичными цифрами, год – ровно четырьмя. Б) д месяца г года (например, 21 июня 1998 года ). В этом формате могут присутствовать ведущие нули (например, 01 июня 198 года ). В) сегодня – текущая дата, установленная в компьютере. <Сдвиг> задается в виде [L лет ] [M месяцев ] [N недель ] [D дней ]. Квадратные скобки здесь означают, что некоторые из указанных четырех составных частей могут опускаться (но не все сразу). Слова «лет», «месяцев», «недель», «дней» склоняются по правилам русского языка: 1 год, 5 лет, 2 месяца, 5 месяцев и т.д. Значением выражений первых трех типов является дата. В случае
выражения первого типа значением является сама <Дата>. В случае выражений
второго и третьего типа вычисление искомой даты происходит следующим
образом: сначала прибавляется (либо вычитается) L лет, затем M месяцев, после
чего N недель и, наконец, D дней. Если в течение этого процесса получается
несуществующее число месяца, то берется последнее число этого месяца (см.
пример). Результатом выражения четвертого типа является количество дней
между двумя указанными датами. |
Страница: << 1 2 3 >> [Всего задач: 12]
Моделью такого предложения (не удовлетворяющей лишь свойству
правдивости) может служить такой текст:
Отъезжая со станции, поезд сначала разгоняется, потом некоторое (возможно нулевое) время движется с максимальной скоростью, затем замедляется и, в конце концов, останавливается на очередной станции. Поезда останавливаются на всех промежуточных станциях метрополитена. На каждой из станций поезда стоят одно и тоже фиксированное время. Поезда разгоняются и замедляются с одинаковым, постоянным ускорением. Поезда имеют одинаковую максимальную скорость. Поезда всегда разгоняются до максимальной скорости, если это не мешает остановиться на следующей станции. Иначе они разгоняются, пока это возможно, а затем сразу же начинают тормозить. Требуется определить, где и когда поезда столкнутся. «Где» определяется
расстоянием от начальной станции до места столкновения, «когда» –
временем, когда произойдет столкновение.
Сканер, считывая номер, преобразовывает горизонтальные и вертикальные линии в символы | (ASCII-код 124) и _ (ASCII-код 95) соответственно. В результате сканирования выдается картинка, составленная из этих символов и пробелов. Пример правильного изображения цифр после сканирования приведен в примере входного файла. К сожалению, иногда сканер допускает ошибки, и некоторые линии могут
пропадать. Вы должны написать программу, которая восстанавливает исходный
номер чека, считая выполненными следующие условия: _ _ _ _ _ _ _ | _| _||_||_ |_ ||_||_| | |_ _| | _||_| ||_| _| Пример выходного файла 123456789
<Дата> <Дата> + <Сдвиг> <Дата> - <Сдвиг> <Дата> - <Дата> Здесь <Дата> задается в одном из следующих трех форматов: А) дд.мм.гггг (например, 21.06.1998 ). В этой записи день и месяц задаются в точности двумя десятичными цифрами, год – ровно четырьмя. Б) д месяца г года (например, 21 июня 1998 года ). В этом формате могут присутствовать ведущие нули (например, 01 июня 198 года ). В) сегодня – текущая дата, установленная в компьютере. <Сдвиг> задается в виде [L лет ] [M месяцев ] [N недель ] [D дней ]. Квадратные скобки здесь означают, что некоторые из указанных четырех составных частей могут опускаться (но не все сразу). Слова «лет», «месяцев», «недель», «дней» склоняются по правилам русского языка: 1 год, 5 лет, 2 месяца, 5 месяцев и т.д. Значением выражений первых трех типов является дата. В случае
выражения первого типа значением является сама <Дата>. В случае выражений
второго и третьего типа вычисление искомой даты происходит следующим
образом: сначала прибавляется (либо вычитается) L лет, затем M месяцев, после
чего N недель и, наконец, D дней. Если в течение этого процесса получается
несуществующее число месяца, то берется последнее число этого месяца (см.
пример). Результатом выражения четвертого типа является количество дней
между двумя указанными датами.
Длина входного файла данных не превосходит 60 килобайт. Числа и знаки операций в выражении могут разделяться пробелами и/или символами перевода строки. Пример входного файла 2 * 43 = 86 Пример выходного файла Да, выполняется
Страница: << 1 2 3 >> [Всего задач: 12] |
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|