На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Строится двоичная запись числа N.
- Далее эта запись обрабатывается по следующему правилу:
- если число N чётное, то к этой записи справа и слева дописываются по две единицы;
- если число N нечётное, то в конец двоичной записи (справа) дописываются два нуля, а в начало (слева) дописывается единица.
Полученная таким образом запись (в ней на три или четыре разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
- Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 1310 = 11012 результатом является число 11101002 = 11610, а для исходного числа 610 = 1102 это число 11110112 = 12310.
Укажите наименьшее число R, превышающее 95, которое может быть результатом работы данного алгоритма. В ответе запишите это число в десятичной системе счисления.
Ответ:
Демонстрационный вариант ЕГЭ 2027 по информатике – задание №5
Решение:
Решение на Python —
Переберём натуральные числа N и для каждого выполним действия алгоритма.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
a = [] for n in range(1, 1000): b = bin(n)[2:] if n % 2 == 0: b = '11' + b + '11' else: b = '1' + b + '00' r = int(b, 2) if r > 95: a.append(r) print(min(a)) |
В переменной b хранится двоичная запись числа N.
Если N чётное, слева и справа к двоичной записи добавляем по две единицы:
|
1 |
b = '11' + b + '11' |
Если N нечётное, слева добавляем единицу, а справа — два нуля:
|
1 |
b = '1' + b + '00' |
Полученную двоичную запись переводим в десятичное число R:
|
1 |
r = int(b, 2) |
Сохраняем только значения R, которые превышают 95, и находим среди них минимальное.
Программа выводит:
|
1 |
100 |
Это значение получается, например, при N = 9:
910 = 10012
Число 9 нечётное, поэтому слева дописываем 1, а справа — 00:
1 + 1001 + 00 = 11001002
11001002 = 10010
Ответ: 100