Site icon Информатика Эксперт

Е5.52 если сумма цифр двоичной записи числа чётная

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

  1. Строится двоичная запись числа N.
  2. Далее эта запись обрабатывается по следующему правилу:
    1. если сумма цифр двоичной записи числа чётная, то к этой записи справа дописывается 0, а затем два левых разряда заменяются на 10;
    2. если сумма цифр двоичной записи числа нечётная, то к этой записи справа дописывается 1, а затем два левых разряда заменяются на 11;

    Полученная таким образом запись является двоичной записью искомого числа R.

  3. Результат переводится в десятичную систему и выводится на экран.

Например, для исходного числа 6 = 1102 результатом является число 10002 = 8, а для исходного числа 4 = 1002 это число 11012 = 13.

Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, больше 50.
В ответе запишите это число в десятичной системе счисления.

Ответ:

 

ЕГЭ по информатике Основная волна 07.06.2024 kompege.ru – задание №5 

Решение:

  1. for i in range(1, 1000):
    • Мы создаём цикл, который проходит по всем натуральным числам от 1 до 999 включительно.
  2. n = bin(i)[2:]:
    • Мы преобразуем текущее число ii в двоичную систему счисления с помощью функции bin().
    • bin(i) возвращает строку, начинающуюся с ‘0b’, поэтому мы используем [2:], чтобы убрать первые два символа и получить только двоичное представление числа.
  3. if n.count(‘1’) % 2 == 0:
    • Мы считаем количество единиц (‘1’) в двоичном представлении числа.
    • Проверяем, является ли это количество чётным (остаток от деления на 2 равен 0).
  4. n = n + ‘0’
    • Если количество единиц чётное, добавляем к двоичной строке ноль (‘0’) справа.
  5. n = ’10’ + n[2:]:
    • Заменяем два левых разряда (первые два символа) на ’10’.
  6. else:
    • Если количество единиц нечётное.
  7. n = n + ‘1’:
    • Добавляем к двоичной строке единицу (‘1’) справа.
  8. n = ’11’ + n[2:]:
    • Заменяем два левых разряда (первые два символа) на ’11’.
  9. r = int(n, 2):
    • Преобразуем полученную модифицированную двоичную строку обратно в десятичное число с помощью int(n, 2).
  10. if r > 50:
    • Проверяем, превышает ли полученное число rr значение 50.
  11. print(i)
    • Если rr больше 50, выводим текущее значение ii.
  12. break
    • Прерываем цикл, так как мы нашли первое подходящее число ii.

Этот алгоритм находит минимальное натуральное число N, которое, после обработки согласно заданным правилам, даёт результат R, превышающий 50.

Ответ: 19

Exit mobile version