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

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом: 1. Строится двоичная запись числа N. 2. К этой записи дописываются справа ещё два разряда по следующему правилу: a) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001; b) над этой записью производятся те же действия – справа дописывается остаток от деления суммы цифр на 2. Полученная таким образом запись является двоичной записью числа R – результата работы данного алгоритма. Укажите минимальное число R, которое больше 60 и может являться результатом работы данного алгоритма. В ответе это число запишите в десятичной системе счисления.

Ответы

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

Ответ:

1111 ( 15 )

Объяснение:

# Получить натуральное число N от пользователя.

def get_number():

   while True:

       try:

           number = int(input('Введите натуральное число: '))

           if number < 0:

               raise ValueError

           break

       except ValueError:

           print('Введено не натуральное число!')

   return number

# Получить двоичную запись числа N.

def get_binary(number):

   binary = ''

   while number > 0:

       binary = str(number % 2) + binary

       number = number // 2

   return binary

# сложить все числа в двоичной записи, и получить остаток от деления на 2.

def get_remainder(binary):

   remainder = 0

   for i in binary:

       remainder += int(i)

   return remainder % 2

# Дописать в конец двоичной записи остаток от деления на 2.

def add_remainder(binary, remainder):

   binary = binary + str(remainder)

   return binary

# Получившееся двоичное число - двоичное число R

# для числа R: сложить все числа в двоичной записи, и получить остаток от деления на 2.

def get_remainder_R(R):

   remainder = 0

   for i in R:

       remainder += int(i)

   return remainder % 2

# для числа R: Дописать в конец двоичной записи остаток от деления на 2.

def add_remainder_R(R, remainder):

   R = R + str(remainder)

   return R

# Вывести R

def print_R(R):

   print('Двоичное число R:', R)

# Преобразовать двоичное число R в натуральное число.

def get_number_R(R):

   number = 0

   for i in R:

       number = number * 2 + int(i)

   return number

# Запуск программы.

def main():

   number = get_number()

   print('Двоичное число N:', get_binary(number))

   binary = get_binary(number)

   print('Остаток от деления на 2:', get_remainder(binary))

   remainder = get_remainder(binary)

   binary = add_remainder(binary, remainder)

   R = binary

   remainder = get_remainder_R(R)

   R = add_remainder_R(R, remainder)

   print_R(R)

   print('Натуральное число R:', get_number_R(R))

   number_R = get_number_R(R)

# Запуск программы.

if __name__ == '__main__':

   main()

# Минимальное значение числа N, что-бы получить число R > 60: "15".

Ссылка на pastebin для копирования: https://pastebin.com/f6h8mHmp

Похожие вопросы
Предмет: Русский язык, автор: ттт58
Предмет: Биология, автор: lehaa2004