Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Информатика мцко 10 класс. Не могу решить задачу

Сережа Фанович Ученик (112), на голосовании 2 года назад
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

Строится двоичная запись числа N.
Затем справа дописываются два разряда: символы 10, если число N чётное, и 11, если нечётное.
Если количество единиц получилось чётным, то справа дописывается цифра 0, иначе справа дописывается цифра 1.

Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.

Укажите минимальное число N, после обработки которого автомат получает число R, большее 53. В ответе найденное число N запишите в десятичной системе.


Решаю в пайтоне выводит ответ 6, но пишет не правильно.
Голосование за лучший ответ
FooFaa me Знаток (253) 2 года назад
если правильно вас понял, то
 def create_R(N): 
# Преобразовать N в двоичную систему
binary_N = bin(N)[2:]

# Определите, является ли N четным или нечетным
even = N % 2 == 0
if even:
binary_N += '10'
иначе:
binary_N += '11'

# Определите, является ли длина binary_N четной или нечетной
length_even = len(binary_N) % 2 == 0
if length_even:
binary_N += '0'
else:
binary_N += '1'

# Преобразовать двоичное число_N обратно в десятичную систему счисления
R = int(binary_N, 2)
return R

# Найдите наименьшее N, которое создает R больше 53
N = 0
while True:
R = create_R(N)
if R > 53:
break
N += 1

print(N)
Этот скрипт должен вывести 6 - наименьшее десятичное число N, такое, что полученное число R больше 53 в двоичном исчислении.
Похожие вопросы