Задание №5: Анализ алгоритмов для исполнителей
Основные типы и прототипы задания №5:
Двоичные автоматы
Троичные и n-ичные автоматы
Поиск минимального N или R
Условие задания
(О. Лысенков) На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится четверичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если сумма цифр четверичной записи кратна 4, то все нули в записи меняются на 3, а все 3 меняются на нули, а затем к числу справа приписывается 21;
б) если сумма цифр четверичной записи не кратна 4, то к записи справа приписывается 22, а затем первые два разряда полученной записи меняются на 11.
Полученная таким образом запись является четверичной записью искомого числа R. Укажите минимальное число N, для которого результатом работы алгоритма является наименьшее число R, превышающее 200. В ответе это число запишите в десятичной системе счисления.
2. Далее эта запись обрабатывается по следующему правилу:
а) если сумма цифр четверичной записи кратна 4, то все нули в записи меняются на 3, а все 3 меняются на нули, а затем к числу справа приписывается 21;
б) если сумма цифр четверичной записи не кратна 4, то к записи справа приписывается 22, а затем первые два разряда полученной записи меняются на 11.
Ответ:
1011
Шаблон решения на Python
# === Задание 5: Автомат преобразования двоичных чисел ===
for n in range(1, 1000):
b = bin(n)[2:]
if b.count('1') % 2 == 0:
b = b + '0'
b = '10' + b[2:]
else:
b = b + '1'
b = '11' + b[2:]
r = int(b, 2)
if r > 40:
print(f"Ответ: N={n}, R={r}")
break