Узнать количество памяти, которое занимает каждый символ
Сначала переводим из 16 системы счисления в 10
F9D2=F*16^3+9*16^2+D*16+2=63954
Теперь десятичное число 63954 переводим в 2 систему счисления:
63954/2 =31977 остаток 0
31977/2=15988 ост 1
15988/2=7994 ост 0
7994/2=3997 ост 0
3997/2=1998 ост 1
1998/2=999 ост 0
999/2=499 ост 1
499/2=249 ост 1
249/2=124 ост 1
124/2=62 ост 0
62/2=31 ост 0
31/2=15 ост 1
15/2=7 ост 1
7/2=3 ост 1
3/2=1 ост 1
Записываем 1 и все остатки в обратном порядке, получаем:
1111100111010010 в 2 системе счисления. число занимает 16 ячеек, т.е. 2 байта как и в условии
Получаем ответ: 1111100111010010
E =15 (10cc)
A=10 (10cc)
3 2 1 2 -1 -2 <--- позиции цифр в числе
E 4 1 A, 1 2 (16cc) =15*16^3+4*16^2+1*16+10*16^0+1*16^-1+2*16^-2=
=61440 + 1024 + 16+10 + 0,0625 +0,0078125=
=62490,0703125
Имеет смысл воспользоваться методом "дихотомии" (деления пополам).
Если с днем рождения все понятно: в году максимум 366 дней и требуется определить нужный, то непонятно, как быть с загаданным учеником - их условно пронумеровать и спрашивать о номере?
Поэтому принимаем такое решение. Мы делим список учеников на два части (например, написав сведения о каждом на отдельной карточке и разложив эти карточки на две равные кучки по 560/2 = 280 человек в каждой. Затем задаем вопрос: загаданный ученик находится в первой кучке? По результатам ответа кучку, содержащую загаданного ученика, снова делим пополам. Процесс повторяем пока не останется одна карточка. Аналогично поступаем с датами рождения.
Тогда количество вопросов определится, как степень числа 2, дающая число, не меньшее количества учеников (дней рождения).
2⁹ < 560 < 2¹⁰, поэтому ученик будет угадан максимум за 10 вопросов.
2⁸ < 366 < 2⁹, поэтому день рождения будет угадан максимум за 9 вопросов.
В сумме потребуется задать не более 9+10 = 19 вопросов.
Конечно, можно придумать более продвинутую систему, когда на карточках учеников будут указаны одновременно и даты их рождения, тогда количество вопросов можно снизить.
1 файл - .pas
2 скрин коду
3 скрин результату