ЕГЭ, Python "Построение алгоритмов и практические вычисления"
Само задание:
Автомат обрабатывает натуральное число N (0 ≤ N ≤ 255) по следующему алгоритму:
- Строится восьмибитная двоичная запись числа N.
- Все цифры двоичной записи заменяются на противоположные (0 на 1, 1 на 0).
- Полученное число переводится в десятичную запись.
- Из нового числа вычитается исходное, полученная разность выводится на экран. Какое число нужно ввести в автомат, чтобы в результате получилось 111?
Пожалуйста объясните, что я сделал не так.
def f(N):
n = bin(N)[2:]
n = str.maketrans('01', '10')
return int(n, 2)
for N in range (1, 255):
if f(N) == 111:
print(N)
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Вы забыли вычислить разность Из нового числа вычитается исходное, полученная разность
Кроме того, строки там вообще не нужны, биты можно инвертировать с помощью оператора "исключающего или" - xor (^). Вся функция:
def f(N):
n = N ^ 255
return N - n