Задача: угадать месяц по двум дням
medium

Задача: угадать месяц по двум дням

Задача про очень умного аналитика

Один аналитик в компании хвастался, что может сделать нужные выводы даже из минимальной информации. Руководитель задал ему такую задачку:

Если взять дату, которая была в последний понедельник прошлого месяца, и сложить с датой, которая будет в первый четверг следующего месяца, получится число 38. Какой сейчас месяц и год, если это всё месяцы одного года?

Аналитик подумал несколько минут и дал правильный ответ. Какой это ответ? Как он узнал?

Находим числа

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

Начнём с четверга следующего месяца и посмотрим на календарь:

Задача: угадать месяц по двум дням

По календарю видно, что первый четверг может быть первым числом, вторым, третьим и так далее до седьмого. Но восьмым числом четверг уже быть не может, потому что он тогда будет не первый уже, а второй.

Получается, что диапазон дат первого четверга лежит от 1 до 7. Но общая сумма дат равна 38, а это значит, что дата последнего понедельника предыдущего месяца лежит в диапазоне от 37-го до 31-го числа. В месяце не может быть больше 31 числа, а значит, единственные даты, которые нам подходят, такие:

понедельник, 31-е число

четверг, 7-е число

Задача: угадать месяц по двум дням

Определяем месяц

Теперь посмотрим, в каких месяцах есть 31-е число:

  • январь,
  • март,
  • май,
  • июль,
  • август,
  • октябрь,
  • декабрь.

Это значит, что в нашем текущем месяце максимально может быть:

  • 28 чисел, если это февраль;
  • 29 чисел, если это февраль високосного года;
  • 30 чисел, если это один из тех месяцев, что следуют за месяцем с 31 днём;
  • 31 число, если это август, который идёт после июля.

Проверим их все по очереди, но сначала нарисуем календарь на прошлый месяц так, чтобы 31-е было последним понедельником:

Задача: угадать месяц по двум дням

Февраль, 28 дней. Раз 31-е число — это понедельник, то 1 февраля будет вторник, а 28 февраля снова понедельник. Получается, что в следующем месяце первое число будет вторником, а третье — четвергом. Но 31 + 3 = 34, что не соответствует условию задачи, поэтому февраль, где 28 дней, нам не подходит.

Задача: угадать месяц по двум дням

Февраль, 29 дней. Раз 31-е число — это понедельник, то 1 февраля будет вторник, а 29 февраля тоже будет вторник. Получается, что в следующем месяце первое число будет средой, а второе — четвергом. Но 31 + 2 = 33, что не соответствует условию задачи, поэтому февраль, где 29 дней, нам тоже не подходит.

Задача: угадать месяц по двум дням

Месяц, где 30 дней. Раз 31-е число — это понедельник, то 1-е число текущего месяца будет вторник, а 30-е среда. Получается, что в следующем месяце первое число будет четвергом. Но 31 + 1 = 32, что не соответствует условию задачи, поэтому февраль, где 29 дней, нам тоже не подходит.

Задача: угадать месяц по двум дням

Методом исключения получается, что единственный вариант, который у нас остаётся, — это когда и в прошлом, и в текущем месяце есть 31-е число. Такое бывает только у двух пар:

  • декабрь → январь;
  • июль → август.

По условию все месяцы должны быть одного года, поэтому декабрь и январь нам не подходят. Остаётся июль, август и сентябрь — проверим их:

Задача: угадать месяц по двум дням

Получается, сейчас — август. Осталось понять, какого года. 

Методом простой сверки с календарями разных лет выясняем, что 7 сентября выпадает на четверг в 2023, 2017, 2006, 1999 году и так далее. То есть в среднем каждые 6–9 лет. Чтобы понять, какой это конкретный год, нужно как-то ограничить поиск.

Любите такие задачи? Подойдите поближе
Внизу кнопка, при нажатии на нее вы попадете на витрину курсов «Практикума» с нуля. Выбираете там то, что вам близко, и погружаетесь в профессию. Через год-полтора вы работаете в какой-нибудь ИТ-компании. И там вы решаете подобные задачи, но уже за деньги. Старт бесплатно.
Начать бесплатно
Любите такие задачи? Подойдите поближе Любите такие задачи? Подойдите поближе Любите такие задачи? Подойдите поближе Любите такие задачи? Подойдите поближе
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
medium