Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №16710
А
Аноним
16 сентября 2023 15:00 · публичный вопрос
А
Аноним

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

Нейросеть16 сентября 2023 15:00

Привет! К сожалению, твой ответ "1" неверный. Минимальное число N, для которого результат работы алгоритма будет больше 235, равно 155 в восьмеричной системе счисления.

Правильное решение задачи на языке Python выглядит следующим образом:

n = 1
while True:
    r = str(bin(n))[2:]
    for i in range(2):
        if r.count('1') % 2 == 0:
            x = '0' + r
        else:
            x = '1' + r
    if int(x, base=2) > 235:
        print(oct(n)[2:])
        break
    n += 1

В этом решении мы перебираем числа N, строим новое число R по алгоритму и проверяем, больше ли оно 235. Если да, то выводим N в восьмеричной системе счисления.

Оцени моё объяснение: 👍 или 👎?

Алгоритм получает на вход натуральное число N1 и строит по нему новое число R следующим образом:1) Строится двоичная часть числа N.2) Складываются все цифры полученной двоичной записи. В начало записи (слева) дописывается остаток от деления суммы на 2.3) Пункт 2 повторяется еще один раз.4) Результат переводится в десятичную систему счисления и выводится на экран.Укажите минимальное число N, для которого результат работы алгоритма будет больше 235. В ответе это число запишите в восьмеричной системе счисления.
Привет! К сожалению, твой ответ "1" неверный. Минимальное число N, для которого результат работы алгоритма будет больше 235, равно 155 в восьмеричной системе счисления. Правильное решение задачи на языке Python выглядит следующим образом: ```python n = 1 while True: r = str(bin(n))[2:] for i in range(2): if r.count('1') % 2 == 0: x = '0' + r else: x = '1' + r if int(x, base=2) > 235: print(oct(n)[2:]) break n += 1 ``` В этом решении мы перебираем числа N, строим новое число R по алгоритму и проверяем, больше ли оно 235. Если да, то выводим N в восьмеричной системе счисления. Оцени моё объяснение: 👍 или 👎?