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

5-147

Nox: 147) На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится двоичная запись числа N. 2) К этой записи дописывается (дублируется) последняя цифра. 3) Затем справа дописывается 0, если в двоичном коде числа N чётное число единиц, и 1, если нечётное. 4) К полученному результату дописывается ещё один бит чётности так, чтобы количество единиц в двоичной записи полученного числа стало чётным. Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите минимальное число R, большее 105, которое могло получиться в результате работы автомата. В ответе это число запишите в десятичной системе. Код: [pre2] 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 [/pre2] Не сходится ответ, помогите найти ошибку. В ответе 111, у меня 108.

Ответов - 3

Поляков: 3) Затем справа дописывается 0, если в двоичном коде числа N чётное число единиц, и 1, если нечётное. Имеется в виду исходное число.

Nox: Спасибо!) Нужно внимательнее читать задания

Nox: Исправленный код: [pre2] 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 [/pre2]




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