Задание №4435. На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1. Строится двоичная запись числа N. 2. Далее эта запись обрабатывается по следующему правилу: а) если сумма цифр в двоичной записи числа чётная, то к этой записи справа дописывается 0, а затем два левых разряда заменяются на 10; б) если сумма цифр в двоичной записи числа нечётная, то к этой записи справа дописывается 1, а затем два левых разряда заменяются на 11. Полученная таким образом запись является двоичной записью искомого числа R. Например, для исходного числа 610 = 1102 результатом является число 10002 = 810, а для исходного числа 410 = 1002 результатом является число 11012 = 1310. Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, большее 29. В ответе запишите это число в десятичной системе счисления.

Задание №4435.
Формальное исполнение простого алгоритма. ЕГЭ по информатике

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа N.

2. Далее эта запись обрабатывается по следующему правилу:

а) если сумма цифр в двоичной записи числа чётная, то к этой записи справа дописывается 0, а затем два левых разряда заменяются на 10;

б) если сумма цифр в двоичной записи числа нечётная, то к этой записи справа дописывается 1, а затем два левых разряда заменяются на 11.

Полученная таким образом запись является двоичной записью искомого числа R.

Например, для исходного числа 610 = 1102 результатом является число 10002 = 810, а для исходного числа 410 = 1002 результатом является число 11012 = 1310.

Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, большее 29. В ответе запишите это число в десятичной системе счисления.

Пояснение:
Решим задание, написав программу на языке программирования Python.

final_list = []

for n in range(1, 1000):
    binary_n = bin(n)[2:]
    if sum(int(i) for i in binary_n) % 2 == 0:
        binary_n += '0'
        binary_n = '10' + binary_n[2:]
    else:
        binary_n += '1'
        binary_n = '11' + binary_n[2:]

    R = int(binary_n, 2)
    if R > 29:
        final_list.append(n)

print(min(final_list))

Таким образом, 11 — минимальное число N, после обработки которого с помощью этого алгоритма получается число R, большее 29.

Показать ответ

Источник: ФИПИ. Открытый банк тестовых заданий
Сообщить об ошибке


Тест с похожими заданиями