Как можно решить с помощью Python?СРОЧНОО!!!!!!!!!!!!
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится двоичная запись числа N. 2)
Затем справа дописываются два разряда: символы 10, если число N чётное, и 11, если нечётное. 3) Если количество единиц получилось чётным, то справа дописывается цифра 0, иначе справа дописывается цифра 1. Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите минимальное число N, после обработки которого автомат получает число R, большее 53. В ответе найденное число N запишите в десятичной системе.
Answers & Comments
Программа:
Python:
# функция построения двоичной записи числа
def go_bin(number):
outStr = '' # для записи получившегося числа
while number > 0: # пока число положительно...
outStr = str(number % 2) + outStr # к значению outStr прибавляем остаток деления числа на 2 (вперёд)
number //= 2 # само число делим на 2 без остатка
return outStr # возвращаем готовую строку
# функция перевода числа в 10-ю СС
def go_den(number):
return int(number, base = 2)
# функция, определяющая работу автоматg
def automat(num):
out = go_bin(num) # действие №1
if num % 2 == 0: out += '10' # действие №2
else: out += '11'
if out.count('1') % 2 == 0: out += '0' # действие №3
else: out += '1'
return go_den(out) # возвращаем число out в десятичной системе счисления
if __name__ == '__main__':
number = -10000 # допустим, искомое число больше -10000
while int(automat(number)) <= 53: # пока оно меньше 53, добавляем единицу, ...
number += 1 # ...когда оно станет равно 53, то цикл всё равно выполнится и прибавится единица, ...
print(number) # ...как раз таки number - необходимое число!
Результат:
7