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

5-184

Nox: 184) Автомат обрабатывает натуральное число N < 256 по следующему алгоритму: 1) Строится восьмибитная двоичная запись числа N–1. 2) Инвертируются разряды исходного числа (0 заменяется на 1, 1 на 0). 3) Полученное число переводится в десятичную систему счисления. Для какого числа N результат работы алгоритма равен 18? [pre2] for N in range(1,256): R=256-N-1 if R==18: print(N) [/pre2] У меня получилось 237, в ответе 238. Разве не нужно единицу из N по условию задачи вычитать?

Ответов - 4

Поляков: Попробуйте выполнить алгоритм вручную для N = 238.

Nox: Вручную ответ сошелся. [pre2] N=18-1=17=00010001 -11111111 00010001 ----------- 11101110 11101110=238 for N in range(1,256): R=255-(N-1) if R==18: print(N) [/pre2] Ошибка была в строке: R=256-N-1, вычитать нужно было из 255, что соответствует 11111111

s11kai: Nox пишет: У меня получилось 237, в ответе 238. Разве не нужно единицу из N по условию задачи вычитать? Попробуйте так [pre2] for i in range(1, 256): s = (i-1)^255 if s == 18: print(i) # еще один способ: print(1+(18^255)) [/pre2]


s11kai: Или так: [pre2] for i in range(1, 256): s = "{:08b}".format(i-1) s = s.replace('1', '2') s = s.replace('0', '1') s = s.replace('2', '0') if int(s,2) == 18: print( i ) [/pre2]



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