Автор | Сообщение |
|
Отправлено: 19.10.21 07:43. Заголовок: 5-184
184) Автомат обрабатывает натуральное число N < 256 по следующему алгоритму: 1) Строится восьмибитная двоичная запись числа N–1. 2) Инвертируются разряды исходного числа (0 заменяется на 1, 1 на 0). 3) Полученное число переводится в десятичную систему счисления. Для какого числа N результат работы алгоритма равен 18? for N in range(1,256): R=256-N-1 if R==18: print(N) У меня получилось 237, в ответе 238. Разве не нужно единицу из N по условию задачи вычитать?
|
|
|
Ответов - 4
[только новые]
|
|
|
| Администратор
|
Сообщение: 2958
|
|
Отправлено: 19.10.21 10:20. Заголовок: Попробуйте выполнить..
Попробуйте выполнить алгоритм вручную для N = 238.
|
|
|
|
Отправлено: 19.10.21 12:03. Заголовок: Вручную ответ сошелс..
Вручную ответ сошелся. 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) Ошибка была в строке: R=256-N-1, вычитать нужно было из 255, что соответствует 11111111
|
|
|
|
Отправлено: 17.04.23 09:17. Заголовок: Nox пишет: У меня п..
Nox пишет: цитата: | У меня получилось 237, в ответе 238. Разве не нужно единицу из N по условию задачи вычитать? |
| Попробуйте так for i in range(1, 256): s = (i-1)^255 if s == 18: print(i) # еще один способ: print(1+(18^255))
|
|
|
|
Отправлено: 17.04.23 09:20. Заголовок: Или так: for i in r..
Или так: 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 )
|
|
|
|