26.04.2025

Поляков раздел 5 №149

# 149) На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R
# следующим образом.
# 1) Строится двоичная запись числа N.
# 2) К этой записи дописывается (дублируется) последняя цифра.
# 3) Затем справа дописывается 0, если в двоичном коде числа N чётное
#     число единиц, и 1, если нечётное.
# 4) К полученному результату дописывается ещё один бит чётности так,
#     чтобы количество единиц в двоичной записи полученного числа стало
#     чётным.
# Полученная таким образом запись (в ней на три разряда больше, чем в
#     записи исходного числа N) является двоичной записью искомого числа R.
#     Укажите минимальное число N, после обработки которого автомат
#     получает число, большее 136. В ответе это число запишите в
#     десятичной системе.

for n in range(1,10000):
    # print(n)
    m = bin(n)
    # print(m)
    m = m[2::]  # 1 шаг
    mm = m
    # print(m)
    m = m + m[-1]  # шаг 2
    # print(m)
    if mm.count('1') % 2 == 0: # 3 шаг
        m = m + '0'
    else:
        m = m + '1'
    # print(m)

    if m.count('1') % 2 == 0: # 4 шаг
        m = m + '0'
    else:
        m = m + '1'
    # print(m)
    R=int(m,2)
    if R>136:
        print(n)
        break

Добавить комментарий