Top.Mail.Ru
Ответы

Написать программу python

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число
следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к этой записи дописывается три последние
двоичные цифры;
б) если число N на 3 не делится, то остаток от деления умножается на 3, переводится
в двоичную запись и дописывается в конец числа
Полученная таким образом запись является двоичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Укажите минимальное число R, большее 151, которое может быть получено с помощью
описанного алгоритма. В ответе это число запишите в десятичной системе счисления.

По дате
По рейтингу
Аватар пользователя
12345678910111213141516171819202122232425262728
 def build_number_r(n): 
    # Переводим число N в двоичное представление 
    binary_n = bin(n)[2:] 
     
    # Обработка числа в соответствии с условиями 
    if n % 3 == 0: 
        # Дописываем в конец трри последние двоичные цифры 
        binary_r = binary_n + binary_n[-3:] 
    else: 
        # Остаток от деления умножаем на 3 и переводим в двоичную запись 
        remainder = (n % 3) * 3 
        binary_remainder = bin(remainder)[2:] 
        binary_r = binary_n + binary_remainder 
     
    # Переводим результат в десятичную систему 
    r = int(binary_r, 2) 
    return r 
 
# Начальное значение N 
N = 1 
 
# Искомое число R должно быть больше 151 
while True: 
    R = build_number_r(N) 
    if R > 151: 
        print(f"The minimum number R that is greater than 151 is: {R}") 
        break 
    N += 1 
Аватар пользователя
Знаток

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

Пусть N = 50. Его двоичная запись будет 110010. Поскольку 50 не делится на 3, то остаток от деления на 3 равен 2. Переводим 2 в двоичную систему: 10. Дописываем полученную двоичную запись к исходной, получаем: 11001010. Переводим это число в десятичную систему и получаем 202.

Теперь проверим, будет ли какое-то другое число меньше 202 давать результат больше 151. При проверке выясняется что это не так, таким образом, минимальное число R, большее 151, которое может быть получено с помощью описанного алгоритма, равно 202.

Ответ: 202.