№5
Примеры решений: двоичная СС
Алгоритмы и исполнители
Примеры решений задач с двоичной СС
№ 4 Демоверсия 2021 (Уровень: Базовый)
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи числа N, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия – справа дописывается остаток от деления суммы её цифр на 2. Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите такое наименьшее число N, для которого результат работы данного алгоритма больше числа 77. В ответе это число запишите в десятичной системе счисления.
for n in range(1, 100000):
nb = f'{n:b}'
for _ in range(2):
nb += str(sum(int(x) for x in nb) % 2)
r = int(nb, 2)
if r > 77:
print(n)
break
№ 405 (Уровень: Базовый)
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1) Строится двоичная запись числа N.
2) Затем справа дописываются два разряда: символы 01, если число N чётное, и 10, если нечётное.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите минимальное число R, большее 81, которое может являться результатом работы этого алгоритма. В ответе это число запишите в десятичной системе
res = []
for n in range(1, 100000):
nb = f'{n:b}'
if n % 2 == 0:
nb += '01'
else:
nb += '10'
r = int(nb, 2)
if r > 81: res.append(r)
print(min(res))