Задание №5: Анализ алгоритмов для исполнителей
Основные типы и прототипы задания №5:
Двоичные автоматы
Троичные и n-ичные автоматы
Поиск минимального N или R
Условие задания
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1) Вычисляется сумма S1 всех нечётных цифр десятичной записи числа N. Если нечётных цифр нет, сумма S1 считается равной 0.
2) Вычисляется сумма S2 всех цифр десятичной записи числа N, стоящих на позициях с чётными номерами. Позиции нумеруются слева направо, начиная с 1. Для однозначных чисел сумма S2 считается равной 0.
3) Вычисляется результат R как модуль разности S1 и S2.
Например, N = Дано число N = 1234. Сумма нечётных цифр S1 = 1 + 3 = 4. Сумма цифр в позициях с чётными номерами S2 = 2 + 4 = 6. Результат работы алгоритма R = 6 – 4 = 2.
Укажите наименьшее число, в результате обработки которого по данному алгоритму получится число 30.
2) Вычисляется сумма S2 всех цифр десятичной записи числа N, стоящих на позициях с чётными номерами. Позиции нумеруются слева направо, начиная с 1. Для однозначных чисел сумма S2 считается равной 0.
3) Вычисляется результат R как модуль разности S1 и S2.
Например, N = Дано число N = 1234. Сумма нечётных цифр S1 = 1 + 3 = 4. Сумма цифр в позициях с чётными номерами S2 = 2 + 4 = 6. Результат работы алгоритма R = 6 – 4 = 2.
Ответ:
3090909
Шаблон решения на 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