https://kpolyakov.spb.ru/school/egetest/b5.htm цитата: |
7. На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится двоичная запись числа N. 2) К этой записи дописывается (дублируется) последняя цифра. 3) Затем справа дописывается 0, если в двоичном коде числа N чётное число единиц, и 1, если нечётное. 4) К полученному результату дописывается ещё один бит чётности так, чтобы количество единиц в двоичной записи полученного числа стало чётным. Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите минимальное число R, большее 80, которое могло получиться в результате работы автомата. В ответе это число запишите в десятичной системе. |
|
Я провел некоторое время пытаясь понять, почему мой ответ 92 не подходит, перебором узнал что правильный ответ - 95.
Я правда не понимаю, если предположить что ответ 95, проверим, мог ли алгоритм получить такое число.
двоичная запись числа 95 - 1011111 т.к. по условию в конечной записи на три разряда больше, вычеркнем их 1011
111 .
Теперь, у нас есть число 1011, прогоним его через алгоритм.
1) Строится двоичная запись числа N. (уже, 1011)
2) К этой записи дописывается (дублируется) последняя цифра.
1011 -> 10111
3) Затем справа дописывается 0, если в двоичном коде числа N чётное число единиц, и 1, если нечётное.
10111 - здесь 4 единицы, значит четное, следовательно дописываем 0
101110
4) К полученному результату дописывается ещё один бит чётности так, чтобы количество единиц в двоичной записи полученного числа стало чётным
101110 - 4 единицы - четное, дописываем 0
1011100
Переведем ответ в десятичную систему: 1011100 = 92
Т.к. получившийся ответ не равен 95, с которого мы начали, алгоритм не мог его получить.
Если я ошибся в каком-то из пунктов, подскажите пожалуйста.