Поиск по этому блогу

вторник, 28 марта 2023 г.

№ 5368 (ЕГЭ-2022)

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

1) Строится двоичная запись числа N.

2) К этой записи дописываются ещё несколько разрядов по следующему правилу:

   а) если сумма цифр в двоичной записи числа чётная, то к этой записи справа дописывается 0, а затем два левых разряда заменяются на 10;

   б) если сумма цифр в двоичной записи числа нечётная, то к этой записи справа дописывается 1, а затем два левых разряда заменяются на 11.

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

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

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

Решение
maxN=0    # максимальное число
for N in range(1,100): # перебор возможных чисел
    s=bin(N)    # перевод числа в двоичную систему счисления
    s=s[2:]    #  отрезание приставки  '0b', указывающей на систему счисления
    su=0    # обнуление суммы цифр
    for i in s:    #перебор цифр двоичной записи числа N
        su+=int(i) # накопление суммы цифр
#выполнение условий получения двоичной записи числа R   
 if su%2==0:
        s+='0'
        s='10'+s[2:]
    else:
        s+='1'
        s='11'+s[2:]
    R=int(s,2)    #перевод из двоичной записи в десятичную
    if R<35:
        maxN=N
print(maxN)

Комментариев нет:

Отправить комментарий