На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Строится двоичная запись числа N.
- К этой записи дописываются справа ещё два разряда по следующему правилу:
- а) складываются все цифры двоичной записи числа N, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
- б) над этой записью производятся те же действия — справа дописывается остаток от деления суммы её цифр на 2.
- Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
- Результат переводится в десятичную систему и выводится на экран.
Укажите минимальное число R, которое превышает число 75 и может являться результатом работы данного алгоритма.
В ответе запишите это число в десятичной системе счисления.
Ответ:
ЕГЭ по информатике Основная волна (Центр) 19.06.2024 kompege.ru – задание №5
Решение:
Решение на Python — Митаева Зарина Талгатовна
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
a = [] for n in range(1,1000): b = bin(n)[2:] if b.count('1')%2 == 0: b = b + '0' else: b = b + '1' if b.count('1') % 2 == 0: b = b + '0' else: b = b + '1' r = int(b,2) if r>75: a.append(r) print(min(a)) |
Рассмотрим алгоритм решения задачи:
- Создаем пустой список
a, в который будем добавлять все числа, превышающие 75 и соответствующие условиям задачи. - Проходимся по всем числам
nот 1 до 999 (так как в задаче сказано, что минимальное число R, превышающее 75, нужно найти). - Для каждого числа
nстроим его двоичную запись, убирая префикс «0b» с помощьюbin(n)[2:]. - Считаем количество единиц в двоичной записи числа
b:- Если количество единиц четное, то дописываем в конец
bноль. - Если количество единиц нечетное, то дописываем в конец
bединицу.
- Если количество единиц четное, то дописываем в конец
- Снова считаем количество единиц в обновленной двоичной записи
b:- Если количество единиц четное, то дописываем в конец
bноль. - Если количество единиц нечетное, то дописываем в конец
bединицу.
- Если количество единиц четное, то дописываем в конец
- Преобразуем полученную двоичную запись
bв десятичное число с помощьюint(b, 2). - Если полученное число
rбольше 75, добавляем его в списокa. - После завершения цикла выводим минимальное число из списка
aс помощьюmin(a).
Ответ: 78
