Задание №5: Анализ алгоритмов для исполнителей
Основные типы и прототипы задания №5:
Двоичные автоматы
Троичные и n-ичные автоматы
Поиск минимального N или R
Условие задания
(О. Лысенков) На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится пятеричная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если сумма цифр пятеричной записи кратна 5, то все нули в записи меняются на 1, а все 1 меняются на нули, а затем к числу справа приписывается 14;
б) если сумма цифр пятеричной записи не кратна 5, то к записи справа приписывается 33, а затем первые два разряда полученной записи меняются на 44.
Полученная таким образом запись является пятеричной записью искомого числа R. Укажите минимальное число N, для которого результатом работы алгоритма является наименьшее число R, превышающее 370. В ответе это число запишите в десятичной системе счисления.
2. Далее эта запись обрабатывается по следующему правилу:
а) если сумма цифр пятеричной записи кратна 5, то все нули в записи меняются на 1, а все 1 меняются на нули, а затем к числу справа приписывается 14;
б) если сумма цифр пятеричной записи не кратна 5, то к записи справа приписывается 33, а затем первые два разряда полученной записи меняются на 44.
Ответ:
41
Шаблон решения на 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