Форум » Выполнение и анализ алгоритмов для исполнителей » Задание 5 № 178 » Ответить

Задание 5 № 178

mayushka0105: [quote]178) (А.М. Кабанов, Тольятти) Автомат обрабатывает натуральное число N < 128 по следующему алгоритму: 1) Строится восьмибитная двоичная запись числа N. 2) Инвертируются разряды исходного числа (0 заменяется на 1, 1 на 0). 3) К полученному двоичному числу прибавляют единицу. 4) Полученное число переводится в десятичную систему счисления. Чему равен результат работы алгоритма для N = 95?[/quote] Здравствуйте! Я решала эту задачу двумя способами, у меня никак не выходил ответ "161". 1 способ (программа): [pre2]def f(n): s = bin(n)[2:] s = '0' * (8 - len(s)) + s f = '' for k in range(len(s)): if s[k] == '0': f += '1' else: f += '0' f += '1' w = int(f, 2) return w print(f(95))[/pre2] Ответ: 321 2 способ: 1) 95 (10) = 1011111 (2) 2) 01011111 3) 10100000 4) 101000001 5) 101000001 (2) = 321 (10)

Ответов - 3

zachto: Единица прибавляется не как + '1', а просто как + 1 к числу. 1) Изначальное число 95 равно 01011111 2) Инвертируем биты - 10100000 3) Прибавляем 1 - 10100001 4) Переводим в десятичную систему - 128 + 32 + 1 = 161

s11kai: mayushka0105 пишет: [pre2]def f(n): s = bin(n)[2:] s = '0' * (8 - len(s)) + s f = '' for k in range(len(s)): if s[k] == '0': f += '1' else: f += '0' f += '1' w = int(f, 2) return w print(f(95)) [/pre2] Данную задачку проще решить так: [pre2] for i in range(1, 256): s = 1+(i^255) if s == 95: print(i) [/pre2]

s11kai: Простите, оказывается, можно еще проще! print((95^255)+1)




полная версия страницы