ЗАДАЧИ
problems.ru
О проекте | Об авторах | Справочник
Каталог по темам | по источникам |
К задаче N

Проект МЦНМО
при участии
школы 57
Выбрана 1 задача
Версия для печати
Убрать все задачи

Современные системы управления базами данных поддерживают широкий класс различных операций с датами. Для решения этой задачи Вы должны написать программу, реализующую некоторые из таких операций. Ваша программа должна обрабатывать выражения следующих типов:
    <Дата>
    <Дата> + <Сдвиг>
    <Дата> - <Сдвиг>
    <Дата> - <Дата>

Здесь <Дата> задается в одном из следующих трех форматов:
А) дд.мм.гггг (например, 21.06.1998 ). В этой записи день и месяц задаются в точности двумя десятичными цифрами, год – ровно четырьмя.
Б) д месяца г года (например, 21 июня 1998 года ). В этом формате могут присутствовать ведущие нули (например, 01 июня 198 года ).
В) сегодня – текущая дата, установленная в компьютере.
<Сдвиг> задается в виде [L лет ] [M месяцев ] [N недель ] [D дней ]. Квадратные скобки здесь означают, что некоторые из указанных четырех составных частей могут опускаться (но не все сразу). Слова «лет», «месяцев», «недель», «дней» склоняются по правилам русского языка: 1 год, 5 лет, 2 месяца, 5 месяцев и т.д. 

Значением выражений первых трех типов является дата. В случае выражения первого типа значением является сама <Дата>. В случае выражений второго и третьего типа вычисление искомой даты происходит следующим образом: сначала прибавляется (либо вычитается) L лет, затем M месяцев, после чего N недель и, наконец, D дней. Если в течение этого процесса получается несуществующее число месяца, то берется последнее число этого месяца (см. пример). Результатом выражения четвертого типа является количество дней между двумя указанными датами. 

Входные данные

Входной файл содержит последовательность выражений, каждое из которых записано в отдельной строке. Большие и маленькие буквы в выражениях не различаются.

Выходные данные

Для заданных выражений требуется вывести в выходной файл их значения в том же порядке, в котором указаны выражения. Для выражений первых трех типов нужно выдать дату в формате Б, а затем через запятую указать день недели, соответствующий этой дате. Для выражений четвертого типа необходимо вывести одно целое число. Каждое значение выводится в отдельную строку выходного файла.

Пример входного файла

30 января 1998 года + 1 месяц 1 день
21 июня 1998 года - 1.06.1998

Пример выходного файла

1 марта 1998 года, воскресенье
20

   Решение

Задача 116464
Тема:    [ Взвешивания ]
Сложность: 2+
Классы: 5,6
В корзину
Прислать комментарий

Условие

Семь монет расположены по кругу. Известно, что какие-то четыре из них, идущие подряд, – фальшивые и что каждая фальшивая монета легче настоящей. Объясните, как найти две фальшивые монеты за одно взвешивание на чашечных весах без гирь. (Все фальшивые монеты весят одинаково.)


Решение

 Заметим, что три настоящие монеты также лежат подряд. Занумеруем монеты по кругу, например, двигаясь по часовой стрелке, числами от 1 до 7 (см. рис.).

  Предложим два способа взвешивания.

  Первый способ. На одну чашу весов положим монеты с номерами 1 и 2, а на другую – монеты с номерами 4 и 5. При таком взвешивании все четыре фальшивые монеты не могут оказаться на весах и при этом настоящих монет на весах – не более двух.
  Рассмотрим два случая.
  1) Одна из чаш легче. Тогда на ней обе монеты фальшивые.
  2) Весы находятся в равновесии. Тогда на каждой чаше весов – одна фальшивая монета и одна настоящая.
  Следовательно, монеты 6 и 7 – фальшивые.

  Второй способ. На одну чашу весов положим монету № 1, а на другую – монету № 4. Возможны три случая.
  1) Весы оказались в равновесии. Тогда обе монеты на чашах – фальшивые.
  2) Монета № 1 легче, чем монета № 4. Тогда монета № 1 – фальшивая, а №4 – настоящая. Значит, и монета 7 – также фальшивая.
  3) Монета № 1 тяжелее, чем монета № 4. Тогда монета № 1 – настоящая. Следовательно, монеты 4 и 5 – фальшивые.

Источники и прецеденты использования

олимпиада
Название Окружная олимпиада (Москва)
год
Год 2011
Класс
Класс 5
Задача
Номер 5.5

© 2004-... МЦНМО (о копирайте)
Пишите нам

Проект осуществляется при поддержке Департамента образования г.Москвы и ФЦП "Кадры" .