Дан порядковый номер дня года k

Дан порядковый номер дня года k

Калькулятор поможет узнать порядковый номер дня в високосном и невисокосном годе, начиная с начала года. Для начала расчета введите в ячейку дату в порядке: день, месяц, год. Выберите тип расчета:

  • Найти номер дня
  • Определить дату по номеру дня

В ответ калькулятор рассчитает какой порядковый номер у сегодняшнего дня в 2019 году либо другом указанном временном промежутке.

На этой странице дано решение примеров Integer24 — Integer28 из задачника Абрамяна, в которых рассматривается определение дня недели в году.

Дней недели всего 7, и их номера 0, 1, 2, . 6. А это значит, что для определения дня недели, с которого начинается K-й день года, достаточно рассмотреть остатки от деления K на 7. Действидельно, если остаток 1, то это – понедельник (дни 1, 8, 15, . ); остаток 2 – вторник (дни 2, 9, 16, . ), . ; остаток 0 – воскресенье (дни 7, 21, 35, . ).

Таким образом, если год начинается с понедельника (1 января), то достаточно взять K mod 7. А если 1 января – вторник? Тогда очевидно, чтобы получить остаток 2 (номер вторника в задаче), нужно до числа K добавить 1, а потом делить на 7: (K+1) mod 7 – первый день года даст 2-й день недели (вторник). Далее, если 1 января – среда, то вычисляем (K+2) mod 7 – первый день года даст 3-й день недели (3 – номер среды). И так далее, если на 1 января приходится N-й день недели (0, 1, 2, . 6), то вычисляем (K+N-1) mod 7 – в таком случае при K=1 получим остаток N (первый день под номером N).

В результате мы получим следующее:

1) K mod 7 ⇒ 1 января начинается с понедельника

Читайте также:  Почему отключается вай фай на телефоне самсунг

2) (K+1) mod 7 ⇒ 1 января начинается со вторника

3) (K+2) mod 7 ⇒ 1 января начинается со среды

4) (K+3) mod 7 ⇒ 1 января начинается с черверга

5) (K+4) mod 7 ⇒ 1 января начинается с пятницы

6) (K+5) mod 7 ⇒ 1 января начинается с субботы

0) (K+6) mod 7 ⇒ 1 января начинается с воскресенья

N) (K+N-1) mod 7 ⇒ 1 января начинается с дня под номером N

Поскольку в задании Integer24 на 1 января приходится все таки понедельник (номер 1), то для определения K-го дня года из вышеприведенного списка берем пункт 1, что и записано в программе ниже.

Поскольку 1 день года начинается с четверга (номер 4 в условии), то из списка выше под номером 4 имеем выражение (K+3) mod 7, которое используем в задаче:

Этот пример отличается от предыдущих тем, что воскресенье имеет номер 7, а не 0. Поэтому если просто находить остатки по формуле K mod 7, как в задаче Integer24, то для дней 1–6 (с понедельника по субботу) формула даст правильный результат. Но уже при K кратном 7 (7, 14, . – воскресенье) мы получим номер 0 вместо 7: 7 mod 7 = 0. Тогда как быть?

Здесь можно поступить так: номер K уменьшить на 1, а к остатку прибавить 1, в результате чего сумма не изменится, но уже при K=7 (воскресенье) мы получим результат 7, а не 0: (7-1) mod 7 + 1 = 7.

Таким образом, если 1 января – понедельник, то день недели для K-го дня года равен (K-1) mod 7 + 1. Но для задачи Integer26 1 день года вторник, поэтому K-1 нужно увеличить на 1, в результате чего получим: K mod 7 + 1. Для среды имеем (K+1) mod 7 + 1, для четверга – (K+2) mod 7 + 1, пятницы – (K+3) mod 7 + 1, субботы – (K+4) mod 7 + 1, воскресенья – (K+5) mod 7 + 1.

Читайте также:  Как вставить скриншот на андроиде

Вообще, если дни понедельник – воскресенье пронумерованы числами 1..7 соответственно, а на 1 января приходится день с номером N (1..7), то для опредедения дня недели K-го дня года можно воспользоваться формулой: (K+N-2) mod 7 + 1 – это задача Integer28 ниже.

Все пояснения в коде программы, а также в предыдущей задаче Integer26.

Рассмотрение дано в задаче Integer26, также читайте комментарии к коду:

дан порядковый номер дня года (отсчет идет с 1-го января). выведите номер дня недели этого дня, если 1 января — вторник.

формат входных данных:
вводится номер дня года — целое число k (1≤k≤365).

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

мэрия города м-ска приняла решение провести реновацию домов на улице льва толстого. как известно, дома на этой улице нумеруются натуральными числами от 1 до n, при этом на одной части улицы стоят дома с чётными номерами, а на другой — с нечётными. кроме этого, дома с номерами от l до r относятся к застройке, и под программу реновации не .

мэрии определить, сколько домов попадет под программу реновации на чётной стороне улицы.

формат входных данных
на вход программе три целых числа n, l и r (1 ≤ l ≤ r ≤ n ≤ 1018).

формат выходных данных
требуется вывести одно целое число — количество домов, которые попадут под программу реновации на чётной стороне улицы.

примечания
в первом примере из условия на чётной стороне улицы 5 домов — 2, 4, 6, 8 и 10. из них дома 4 и 6 относятся к застройке, поэтому под программу реновации не попадут. оставшиеся три дома имеют номера 2, 8, 10.

Читайте также:  Торнадо языком как делать

во втором примере, вся чётная сторона улицы относится к застройке.

Ссылка на основную публикацию
Голосовой бот в телеграмме
Голосовые сообщения помогают быстрее общаться с собеседником, однако не всегда их удобно слушать. Voicy решает эту проблему. Прежде всего бот...
Вы не можете подключиться к общей папке
Многие столкнулись с тем, что при обновлении Windows 10 до последних релизов из под обновлённой ОС перестали открываться сетевые папки....
Вы хотите узнать дорогу
Упражнения 119 - 256 Вопрос Составьте предложения с обращениями к незнакомому человеку в следующих ситуациях: вы хотите узнать дорогу; вы...
Голосовой ввод для андроид
Голосовой помощник Алиса ОК Google Предлагаем пользователям Андроид голосовой ввод текста на телефоне. Мы собрали лучшие мобильные приложения, позволяющие управлять...
Adblock detector