Предмет: Информатика, автор: commandr15

Как можно решить с помощью Python?СРОЧНОО!!!!!!!!!!!!
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится двоичная запись числа N. 2)
Затем справа дописываются два разряда: символы 10, если число N чётное, и 11, если нечётное. 3) Если количество единиц получилось чётным, то справа дописывается цифра 0, иначе справа дописывается цифра 1. Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите минимальное число N, после обработки которого автомат получает число R, большее 53. В ответе найденное число N запишите в десятичной системе.​

Ответы

Автор ответа: vimmortal2
0

Программа:
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

Похожие вопросы
Предмет: Русский язык, автор: 190284k
Предмет: Английский язык, автор: Rusya70rus