Вопрос:

На вход алгоритма подается натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1. Строится двоичная запись числа N. 2. Все разряды полученного числа инвертируются. 3. К полученному результату справа дописывается бит четности. Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Например, для числа 60 алгоритм будет выполняться следующим образом: 1. N = 60=1111002. 2.0000112. 3.00001102 = 610- Укажите максимальное число R, меньшее 170, которое может быть получено в результате работы этого алгоритма. В ответе запишите это число в десятичной системе.

Ответ:

Разберем алгоритм и попробуем найти закономерность. Число N преобразуется в двоичную запись, инвертируется, и к нему добавляется бит четности. Наша цель - найти максимальное R < 170.

Пусть длина двоичной записи числа N равна k. Тогда длина двоичной записи числа R равна k + 1.

Запишем 170 в двоичной системе: $$170 = 128 + 32 + 8 + 2 = 2^7 + 2^5 + 2^3 + 2^1 = 10101010_2$$

Теперь будем искать число R, которое меньше 170 и удовлетворяет условиям алгоритма.

Попробуем R = 169 (10101001). Тогда без бита четности было бы 1010100. Инвертируем: 0101011. Исходное число должно быть 1010100. Это 84. R = 169 - не подходит, т.к. в двоичной записи 84 нет бита четности.

Давайте попробуем R = 168 = 10101000. Без бита четности: 1010100. Инвертируем: 0101011. Исходное число: 1010100 = 84. Проверим четность: в 84 (1010100) две единицы, значит, четное количество. Бит четности должен быть 0. R = 168 подходит!

Итак, мы нашли число R = 168. Проверим, нет ли большего числа, удовлетворяющего условию.

Ответ: 168

Смотреть решения всех заданий с листа
Подать жалобу Правообладателю

Похожие