• Обозначим дни недели числами от 1 (понедельник) до 7 (воскресенье) соответственно. По известному m — дню недели первого числа текущего месяца — определите день недели числа n. По возможности решите задачу без использования условных операторов и\или циклов. Входные данные На вход программе подаются 2 целых числа 1 ≤ n ≤ 31, 1 ≤ m ≤ 7, каждое в отдельной строке Выходные данные Выведите день недели числа n.

Ответы 1

  • Последовательность дней недели периодична с периодом 7, поэтому номер дня недели можно найти, взяв остаток от деления: (номер дня недели первого числа + сколько прошло) mod 7. Такое решение будет давать верный ответ для всех дней недели кроме воскресенья: для воскресений будет выведен ноль (а не 7). Решить это можно, перенумеровав все номера дней недели с нуля, а не с единицы.m - 1 – номер дня недели первого числа месяца (считая с 0)n - 1 – пройдёт от первого числа (m + n - 2) mod 7 – номер нужного дня недели (считая с 0)(m + n - 2) mod 7 + 1 – ответ.Программа (PascalABC.NET):begin  var n := ReadInteger;  var m := ReadInteger;  print((m + n - 2) mod 7 + 1)end.Пример ввода:77Пример вывода:6(Действительно, 1 апреля 2018 года – воскресенье, а сегодня, 7 апреля – суббота)
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years