Задача к ЕГЭ по информатике на тему «Запись числа в двоичной системе счисления» №15

Алгоритм получает на вход натуральное число 1 » class=»math» src=»/images/inform/quest/quest-3255-1.svg» width=»auto»> и строит по нему новое число R  следующим образом:

  1. Строится двоичная запись числа N  .
  2. В этой записи последний встречаемый ноль заменяется на первые две цифры полученной записи. Если нуля нет в записи числа, алгоритм аварийно завершается.
  3. Запись записывается справа налево (в обратную сторону).
  4. Результат переводится в десятичную систему счисления.

Для скольких значений N  в результате работы алгоритма получится число 255  ?

Решение 1

ans = 0
for i in range(2, 10000):
    s = bin(i)[2:]
    if s.count(’0’) > 0:
        ind = ’’
        for j in range(len(s) - 1, -1, -1):
            if s[j] == ’0’:
                ind = j
                break
        x = s[:ind] + s[0] + s[1] + s[ind + 1:]
        x = x[::-1]
        if int(x, 2) == 255:
            ans += 1
print(ans)

Решение 2

ans = 0
for i in range(2, 10000):
    s = bin(i)[2:]
    if s.count(’0’) > 0:
        s = s[::-1].replace(’0’, s[0:2][::-1], 1)
        if int(s, 2) == 255:
            ans += 1
print(ans)

Ответ: 5
Оцените статью
Я решу все!