Информатика. ЕГЭ
Задания для подготовки
Задачи разных лет из реальных экзаменов, демо-вариантов, сборников задач и других источников
Задание 5. Информатика. ЕГЭ. Поляков-8973
- Просмотры: 258
- Изменено: 5 мая 2026
На вход алгоритма подаётся натуральное число \(N.\) Алгоритм строит по нему новое число \(R\) следующим образом.
- Строится двоичная запись числа \(N.\)
- Далее эта запись обрабатывается по следующему правилу:
- а) если число \(N\) чётное, то к этой записи слева дописывается \(10;\)
- 6) если число \(N\) нечётное, то к этой записи слева дописывается \(1,\) а справа дописывается \(01.\)
- Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа \(4_{10} = 100_2\) результатом является число \(10100_2 = 20_{10},\) а для исходного числа \(5_{10} = 101_2\) это число \(110101_2 = 53_{10}.\)
Укажите минимальное число \(R,\) которое может быть результатом работы этого алгоритма, при условии, что \(N\) больше, чем \(18.\) В ответе запишите это число в десятичной системе счисления.
Решение:
Python
def sz(N):
if N == 1:
return 1
return 1 + sz(N >> 1)
def R(N):
s = sz(N)
return (2 << s) + N if N & 1 == 0 \
else (1 << s + 2) + (N << 2) + 1
# print(R(4), R(5))
print(min(R(x) for x in range(19, 1000)))
C++
#include<iostream>
using namespace std;
int sz(int n) {
if (n == 1)
return 1;
return 1 + sz(n >> 1);
}
int R(int n) {
if (n & 1)
return (1 << sz(n) + 2) + (n << 2) + 1;
return (2 << sz(n)) + n;
}
int main() {
// cout << R(4) << " " << R(5) << endl;
int mr = 1000000;
for (int n = 19; n < 1000; n++)
mr = min(mr, R(n));
cout << mr << endl;
return 0;
}
Ответ: \(84\)
Обсуждение задания
Здесь пока нет ни одного комментария. Будьте первым!


