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

Задача 5 №90 - неправильный ответ

vostrik: [quote]90. На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится двоичная запись числа N. 2) К этой записи дописывается справа бит чётности: 0, если в двоичном коде числа N было чётное число единиц, и 1, если нечётное. 3) К полученному результату дописывается ещё один бит чётности. Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число, большее, чем 108. В ответе это число запишите в десятичной системе. [/quote] Ответ в excel таблице: 28. Правильный ответ: 27 Краткое объяснение: 27 = 11011 После обработки 1101101 = 109 Число 109 > 108. [pre2]for N in range(1000): R = str(bin(N))[2:] if R.count('1') % 2 == 0: R += '01' else: R += '10' if int(R,2) > 108: print(N) break [/pre2]

Ответов - 3 новых

Поляков: Последний дописанный бит - это всегда 0, так как в п. 2 четногсть количества единиц в двоичном коде уже достигнута.

Агеева: При запуске программы с n = 27 (ответ к задаче) r = 108. По условию же r должно быть больше 108 => ответ 28. Подскажите, пожалуйста, в чем ошибка? [pre2] for n in range(1000): b = bin(n)[2:] if b.count('1')%2 == 0: b += '0' else: b += '1' b += '0' r = int(b, 2) if r > 108: print(n) break [/pre2]

Поляков: Агеева пишет: При запуске программы с n = 27 (ответ к задаче) r = 108. Ответ 28.




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