На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится двоичная запись числа N. 2) К этой записи дописываются справа ещё два разряда по следующему правилу: а) скла...
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1) Строится двоичная запись числа N.
2) К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия – справа дописывается остаток от деления суммы цифр на 2. Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите минимальное число R, которое превышает 43 и может являться результатом работы алгоритма. В ответе это число запишите в десятичной системе.
Ответ(ы) на вопрос:
Гость
1. Отметим, что приписывание к двоичному числу двух младших разрядов предполагает предварительный сдвиг этого числа влево на два разряда (что равносильно умножению на 2²=4), а затем установку двух младших разрядов в соответствующие приписываемым битам значения. Следовательно, можно записать, что 4N+a>43, где a - число, образованное приписываемыми справа битами, которое не может превышать 11(2)=3(10)
4N+[0..3]≥44, откуда минимальное N=11
Теперь запишем N=11 в двоичной системе и применим к нему заданный алгоритм.
N=1011(2), число единиц три, нечетное, приписываем 1, получая 10111.
Теперь число единиц четное, приписываем 0 и получаем R=101110(2).
В десятичной записи ему соответствует число 46.
Ответ: 46
Гость
1) Результатом работы должно быть число больше, чем 43, но при этом быть минимальным. Т.е в двоичной с.с это скорее всего 6-значное число, т.к семизначное даст нам результат больше или равный 64.
2) Так как над начальной записью действия производятся дважды, то чтобы получилось 6-значное число в итоге работы программы нужно для начала взять 4-значное. Возьмем (для пробы) 1000. После выполнения алгоритмя число станет 100010. Первый раз к числу прибавится 1, т.е остаток будет 1, второй раз к числу прибавится 0. При переводе этого числа в 10-ю с.с получим 33. МАЛО.
3) Рассмотрим несколько вариантов таким же образом и остановимся, наконец, на том, который будет удовлетворять работе алгоритма.
4) Это 1011. После выполнения первого построения остаток будет 1, после второго добавится 0. В результате получится 101110(2)= 32+8+4+2=46(10)
Не нашли ответ?
Похожие вопросы