Вопрос задан 03.02.2024 в 02:26. Предмет Информатика. Спрашивает Давыд Кирилл.

Дан порядковый номер дня года (отсчет идет с 1-го января). Требуется вывести номер дня недели этого дня, если 1 января — понедельник. Запрещено использовать команды if и while. Формат входных данных
Вводится номер дня года — целое число k (1≤k≤365).

Формат выходных данных
Выведите номер дня недели для данного дня года (понедельник — 1, вторник — 2, ..., воскресенье — 7).

Перейти к ответам

Ответы на вопрос

Отвечает Плотникова Виктория.

Для решения этой задачи можно использовать арифметические операции и взять остаток от деления номера дня года на количество дней в неделе. Так как в неделе 7 дней и нам известно, что 1 января — это понедельник (то есть 1-й день недели), то номер дня недели любого дня года можно вычислить как (k + 6) % 7 + 1, где k — это порядковый номер дня года.

Объяснение формулы:

  • k + 6 используется для того, чтобы 1 января (когда k=1) соответствовал 1-му дню недели. Добавляя 6, мы сдвигаемся так, чтобы 1 января приходился на понедельник (1-й день недели), а не на воскресенье, которое было бы при простом использовании k % 7.
  • % 7 дает остаток от деления, который всегда будет в диапазоне от 0 до 6, что соответствует дням недели с понедельника (0+1) по воскресенье (6+1).
  • Прибавление 1 в конце нужно для коррекции, так как в нашем отсчете понедельник — это 1, а не 0.

Например, если k=1 (1 января), подставляя в формулу, получим (1 + 6) % 7 + 1 = 8 % 7 + 1 = 1 + 1 = 2, что не соответствует ожидаемому результату, так как 1 января должен быть понедельником, то есть 1-м днем недели. Значит, моя первоначальная формула была неверной. Правильная формула должна выглядеть как (k - 1) % 7 + 1.

Исправленное объяснение:

  • k - 1 делает так, чтобы 1 января (когда k=1) соответствовал 0, что после прибавления 1 даст 1, соответствующий понедельнику.
  • % 7 по-прежнему дает остаток от деления на 7, что обеспечивает цикличность счета дней недели.
  • Прибавляем 1, чтобы дни недели начинались с 1, а не с 0.

Таким образом, используя исправленную формулу (k - 1) % 7 + 1, можно получить номер дня недели для любого дня года, начиная с 1 января как понедельника, без использования условных операторов и циклов.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос