Имеет смысл воспользоваться методом "дихотомии" (деления пополам).
Если с днем рождения все понятно: в году максимум 366 дней и требуется определить нужный, то непонятно, как быть с загаданным учеником - их условно пронумеровать и спрашивать о номере?
Поэтому принимаем такое решение. Мы делим список учеников на два части (например, написав сведения о каждом на отдельной карточке и разложив эти карточки на две равные кучки по 560/2 = 280 человек в каждой. Затем задаем вопрос: загаданный ученик находится в первой кучке? По результатам ответа кучку, содержащую загаданного ученика, снова делим пополам. Процесс повторяем пока не останется одна карточка. Аналогично поступаем с датами рождения.
Тогда количество вопросов определится, как степень числа 2, дающая число, не меньшее количества учеников (дней рождения).
2⁹ < 560 < 2¹⁰, поэтому ученик будет угадан максимум за 10 вопросов.
2⁸ < 366 < 2⁹, поэтому день рождения будет угадан максимум за 9 вопросов.
В сумме потребуется задать не более 9+10 = 19 вопросов.
Конечно, можно придумать более продвинутую систему, когда на карточках учеников будут указаны одновременно и даты их рождения, тогда количество вопросов можно снизить.
Для кодирования 7 различных символов потребуется
бита.
Если пароль состоит из 14 символов, то для него потребуется 14х3=42 бита.
Но, поскольку, пароль занимает целое число байт, потребуется 42/8 ≈ 6 байт
40 таких паролей займут объем 40х6=240 байт.
Ответ: 240 байт
Sub z()
Dim a(8) As String
For i = 1 To 8
a(i) = InputBox("Введи слово")
Next i
For i = 1 To 8
Cells(i + 1, 1) = a(i)
n = Len(a(i))
Cells(i + 1, 2) = n
Cells(i + 1, 3) = Mid(a(i), 1, 1)
Cells(i + 1, 4) = Mid(a(i), n, 1)
Next i
<span>End Sub
Первую строку не использовал, оставил для заголовков</span>