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

Ответы на вопрос

Ответ:
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



Для решения этой задачи можно последовательно применить описанный алгоритм, начиная с числа N = 60, и проверять каждое полученное число R, пока не будет найдено число, которое больше 60. Ниже приведены промежуточные значения при применении алгоритма:
N = 60: 111100 N = 111100: 1111001 N = 1111001: 11110010 N = 11110010: 111100101 N = 111100101: 1111001010 N = 1111001010: 11110010101 N = 11110010101: 111100101011 N = 111100101011: 1111001010110 N = 1111001010110: 11110010101101 N = 11110010101101: 111100101011011 N = 111100101011011: 1111001010110110 N = 1111001010110110: 11110010101101101 N = 11110010101101101: 111100101011011010 N = 111100101011011010: 1111001010110110101 N = 1111001010110110101: 11110010101101101010
Таким образом, минимальное число R, которое больше 60 и может являться результатом работы данного алгоритма, равно 11110010101101101010 в двоичной системе. Для перевода его в десятичную систему счисления, достаточно преобразовать его в соответствующее десятичное число:
11110010101101101010 (2) = 1006378 (10)
Ответ: Минимальное число R равно 1006378 в десятичной системе счисления.


Похожие вопросы


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili