Месяц находим методом половинного деления.
Двоичная запись числа 366 размещается в 9 битах (в 8 битах размещается только 256 чисел , а в 9 битах - уже 512).
То есть , понадобится задать 8 вопросов и девятой фразой будет ответ.
В году 365 (366) дней. Пусть 366, для 365 рассуждение то же.
Рассмотрим самый худший вариант
Середина года - день номер 366/2=183. Это 1 июля.
Первый вопрос: День рождения в первой половине года?
Допустим, да.
Второй вопрос: День рождения в первом квартале?
Допустим, нет. Следовательно во втором.
Второй квартал - это дни с номерами от 92 до 182. Середина - среднее арифметическое. (92+182)/2=137. Это дата 17 мая.
Третий вопрос: День рождения позднее 17 мая?
Допустим, нет.
Следовательно, интервал дат 1 апреля - 17 мая, 91 день. Опять делим на 2, сужая интервал до 22 дней. Это дата 22 апреля.
Четвертый вопрос: День рождения позднее 22 апреля?
Допустим, нет.
Новый диапазон поиска - 23 апреля - 17 мая. Половиним его.
Пятый вопрос: День рождения позднее 29 апреля?
Допустим, нет.
Поиск сузился до 23 - 29 апреля. Снова берем половину.
Шестой вопрос: День рождения позднее 26 апреля?
Допустим, нет.
Интервал дат 23-26 апреля. Половиним.
Седьмой вопрос: День рождения позднее 24 апреля?
Допустим, да.
Интервал дат 25-26 апреля.
Восьмой вопрос: День рождения 25 апреля?
Допустим, нет
Девятая фраза: Ваш день рождения 26 апреля.
Cумма равна 35.
Процедура печатает число, если в неё передается n, большее единицы, и при этом сначала срабатывают две процедуры, вложенные в неё.
Передаётся число 10. Оно больше 1. Начинается процедура от числа 7. Оно больше 1. Начинается процедура от числа 4. Оно больше 1. Начинается процедура от числа 1. Оно не больше 1.
Возвращаемся к числу 4. Начинается f(4 div 2), то есть процедура от числа 2. Оно больше 1. Начинается процедура от числа -1. Оно меньше 1. Начинается процедура от 2 div 2, т.е от 1. Число не больше 1. Обе процедуры для двойки выполнены. Печатается 2.
Обе процедуры для числа 4 тоже выполнены. Печатается 4.
Возвращаемся к числу 7. Выполняется вторая процедура для 7, то есть f(3). Обе её процедуры ничего не печатают. Тогда она сама печатает 3.
Обе процедуры для числа 7 выполнены. Печатается 7.
Теперь к самому первому числу 10. Начинается вторая его процедура, то есть от числа 5. Начинается первая процедура от 5, то есть f(2). Обе процедуры для числа 2 ничего не делают, печатается 2. Вторая процедура от 5 тоже 2. Аналогично печатается 2.
Обе процедуры числа 5 выполнены. Печатается 5.
Обе процедуры числа 10 выполнены. Печатается 10.
Ура! осталось посчитать сумму напечатанного.
2+4+3+7+2+2+5+10=35
стоп, объсни нормально какое из них