
Задание 5 На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R
следующим образом. 1. Строится двоичная запись числа N. 2. К этой записи дописываются справа ещё несколько разрядов по следующему правилу: а) Если Nчётное, то к нему справа приписывается в двоичном виде сумма цифр его двоичной записи; б) Если N нечётное, то к нему справа приписываются два нуля, а слева единица. Полученная таким образом запись (в ней как минимум на один разряд больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Например, запись числа 1101 будет преобразована в 11110100. Укажите такое наименьшее число N, для которого результат работы данного алгоритма больше числа 215. В ответе это число запишите в десятичной системе счисления.

Ответы на вопрос

Ответ: Тут в задание опечатка скорее всего
Если делать по примеру из задания, будет такой код:
for i in range(20):
n = i
n = bin(n)[2:]
sum = 0
if int(n) % 2 == 0:
sum = str(n).count('1')
sum = bin(sum)[2:]
r = n + sum
else:
r = '11' + n + '00'
r = int(r, 2)
if r > 215:
print(i)
Если делать по условию задание, будет такой код:
for i in range(30):
n = i
n = bin(n)[2:]
sum = 0
if int(n) % 2 == 0:
sum = str(n).count('1')
sum = bin(sum)[2:]
r = n + sum
else:
r = '1' + n + '00'
r = int(r, 2)
if r > 215:
print(i)



Давайте разберемся с этим алгоритмом. Пошагово:
- Переводим число N в двоичную запись.
- Если N четное, приписываем к нему справа сумму цифр его двоичной записи. Если N нечетное, приписываем справа два нуля, а слева единицу.
Давайте рассмотрим пример:
Пусть N = 13 (1101 в двоичной записи).
Так как N нечетное, мы приписываем два нуля справа и единицу слева. Получаем: 0110101.
Теперь нам нужно найти такое наименьшее N, для которого результат работы алгоритма будет больше 215.
Давайте будем перебирать натуральные числа, начиная с 1, и применять к ним описанный алгоритм, пока не найдем подходящий результат.
Для удобства, мы можем начать с числа 1 и последовательно увеличивать его.
- N = 1, двоичная запись: 1, добавляем два нуля справа, получаем: 100.
- N = 2, двоичная запись: 10, сумма цифр: 1+0 = 1, добавляем 1 справа, получаем: 101.
- N = 3, двоичная запись: 11, сумма цифр: 1+1 = 2, добавляем 10 справа, получаем: 110.
- N = 4, двоичная запись: 100, сумма цифр: 1+0+0 = 1, добавляем 1 справа, получаем: 1001.
- N = 5, двоичная запись: 101, сумма цифр: 1+0+1 = 2, добавляем 10 справа, получаем: 1010.
- N = 6, двоичная запись: 110, сумма цифр: 1+1+0 = 2, добавляем 10 справа, получаем: 1100.
- N = 7, двоичная запись: 111, сумма цифр: 1+1+1 = 3, добавляем 11 справа, получаем: 11100.
Таким образом, минимальное N, для которого результат работы алгоритма больше 215, равно 7. Переводим 7 в десятичную систему счисления: ответ - 7.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili