На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1.Строится двоичная запись числа N.
2.Далее эта запись обрабатывается по следующему правилу:
а) если сумма цифр в двоичной записи числа чётная, то к этой записи справа дописывается 0, а затем два левых разряда заменяются на 1;
б) если сумма цифр в двоичной записи числа нечётная, то к этой записи справа дописывается 1, а затем два левых разряда заменяются на 11.
Полученная таким образом запись является двоичной записью искомого числа R.
Например, для исходного числа 610 = 1102 результатом является число 1002 = 410, а для исходного числа 410 = 1002 результатом является число 11012= 1310.
Укажите число N, после обработки которого с помощью этого алгоритма получается наименьшее значение R, большее 25. В ответе запишите это число в десятичной системе счисления.
Ответ:
Московская апробация ЕГЭ по информатике 04022023 – задание №5
Решение:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
minr = 10**8 for i in range(1, 100): n = bin(i)[2:] if n.count('1') % 2 == 0: n = '1' + n[2:] + '0' else: n = '11' + n[2:] + '1' r = int(n, 2) if r >25: if r<minr: minr = r minn = i print(minn) |
Ответ: 29
