Автор | Сообщение |
|
Отправлено: 19.10.21 06:21. Заголовок: 5-147
147) На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится двоичная запись числа N. 2) К этой записи дописывается (дублируется) последняя цифра. 3) Затем справа дописывается 0, если в двоичном коде числа N чётное число единиц, и 1, если нечётное. 4) К полученному результату дописывается ещё один бит чётности так, чтобы количество единиц в двоичной записи полученного числа стало чётным. Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите минимальное число R, большее 105, которое могло получиться в результате работы автомата. В ответе это число запишите в десятичной системе. Код: for N in range(1,40): N=bin(N)[2:] N+=N[-1] if N.count("1")%2==0: N+="0" else: N+="1" if N.count("1")%2!=0: N+="1" else: N+="0" R=int(N,2) if R>105: print(R) break Не сходится ответ, помогите найти ошибку. В ответе 111, у меня 108.
|
|
|
Ответов - 3
[только новые]
|
|
|
| Администратор
|
Сообщение: 2957
|
|
Отправлено: 19.10.21 10:15. Заголовок: 3) Затем справа допи..
цитата: | 3) Затем справа дописывается 0, если в двоичном коде числа N чётное число единиц, и 1, если нечётное. |
|
Имеется в виду исходное число.
|
|
|
|
Отправлено: 19.10.21 11:05. Заголовок: Спасибо!) Нужно вним..
Спасибо!) Нужно внимательнее читать задания
|
|
|
|
Отправлено: 19.10.21 12:33. Заголовок: Исправленный код: f..
Исправленный код: for N in range(1,40): N=bin(N)[2:] R=N R+=R[-1] if N.count("1")%2==0: R+="0" else: R+="1" if R.count("1")%2!=0: R+="1" else: R+="0" R=int(R,2) if R>105: print(R) break
|
|
|
|