Сколько вопросов, на которые следует ответ "да/нет", необходимо задать, чтобы наверняка угадать загаданного ученика школы (в ней 560 человек) и его день рождения (год угадывать не нужно)?
Имеет смысл воспользоваться методом "дихотомии" (деления пополам). Если с днем рождения все понятно: в году максимум 366 дней и требуется определить нужный, то непонятно, как быть с загаданным учеником - их условно пронумеровать и спрашивать о номере? Поэтому принимаем такое решение. Мы делим список учеников на два части (например, написав сведения о каждом на отдельной карточке и разложив эти карточки на две равные кучки по 560/2 = 280 человек в каждой. Затем задаем вопрос: загаданный ученик находится в первой кучке? По результатам ответа кучку, содержащую загаданного ученика, снова делим пополам. Процесс повторяем пока не останется одна карточка. Аналогично поступаем с датами рождения. Тогда количество вопросов определится, как степень числа 2, дающая число, не меньшее количества учеников (дней рождения). 2⁹ < 560 < 2¹⁰, поэтому ученик будет угадан максимум за 10 вопросов. 2⁸ < 366 < 2⁹, поэтому день рождения будет угадан максимум за 9 вопросов. В сумме потребуется задать не более 9+10 = 19 вопросов.
Конечно, можно придумать более продвинутую систему, когда на карточках учеников будут указаны одновременно и даты их рождения, тогда количество вопросов можно снизить.
1) Переводим в двоичную систему счисления, деля число целочисленно на 2 до тех пор, пока не получится 0. Записываем остатки от деления в обратном порядке.
1100000110011 - ответ
2)Разбиваем двоичное число на тройки, начиная с младшего разряда: [001][100][000][110][011] Каждую тройку переводим в восьмиричную систему счисления и записываем "как есть": [1][4][0][6][3].
14063 - ответ
3)Разбиваем двоичное число на четверки, начиная с младшего разряда: [0001][1000][0011][0011] Переводим каждую четверку в шестнадцатиричную сисиему счисления и записываем "как есть": [1][8][3][3].
В алгебре логики применяются только три операции: конъюнкция (или логическое умножение, обозначается обычно ∧), дизъюнкция (или логическое сложение, обозначается обычно ∨) и инверсия (отрицание, обозначается чаще ¬). Так же, в алгебре логики, в отличие от математики, может быть получено только два результата выражения, каким бы оно не было - это 1 (истина, true) или 0 (ложь, false). Так же, именно с этими символами проводят операции. Алгебраических операций куда больше: умножение, деление, сложение, вычитание, возведение в степень, корень N-ой степени, синусы, косинусы... Я, конечно, не всё перечислил, но разница ощутима. И числа, над которыми проводятся операции, тоже разнообразны, т.к. операции в математике проводятся над числами из десятичной системы счисления. Следовательно, результат операций в математике может получиться любой (в пределах десятичной системы счисления).
Если с днем рождения все понятно: в году максимум 366 дней и требуется определить нужный, то непонятно, как быть с загаданным учеником - их условно пронумеровать и спрашивать о номере?
Поэтому принимаем такое решение. Мы делим список учеников на два части (например, написав сведения о каждом на отдельной карточке и разложив эти карточки на две равные кучки по 560/2 = 280 человек в каждой. Затем задаем вопрос: загаданный ученик находится в первой кучке? По результатам ответа кучку, содержащую загаданного ученика, снова делим пополам. Процесс повторяем пока не останется одна карточка. Аналогично поступаем с датами рождения.
Тогда количество вопросов определится, как степень числа 2, дающая число, не меньшее количества учеников (дней рождения).
2⁹ < 560 < 2¹⁰, поэтому ученик будет угадан максимум за 10 вопросов.
2⁸ < 366 < 2⁹, поэтому день рождения будет угадан максимум за 9 вопросов.
В сумме потребуется задать не более 9+10 = 19 вопросов.
Конечно, можно придумать более продвинутую систему, когда на карточках учеников будут указаны одновременно и даты их рождения, тогда количество вопросов можно снизить.