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

Автомат получает на вход натуральное числа N>1 и строит по нему новое число R следующим образом:
1.Строится двоичная запись числа N.
2. Подсчитывается количество нулей и единиц в полученной записи. Если их количество одинаково, в конец записи добавляется ее последняя цифра. В противном случае в конец записи добавляется цифра, которая встречается реже.
3. Шаг 2 повторяется еще раз.
4. Результат переводится в десятичную систему счисления.

При каком наибольшем исходном числе N < 300 в результате алгоритма получится число, которое делится на 3, но не делится на 6?

for n in range(2, 300):
    b = bin(n)[2:]
    if b.count(’0’) == b.count(’1’):
        b += b[-1]
    elif b.count(’0’) < b.count(’1’):
        b += ’0’
    else:
        b += ’1’

    if b.count(’0’) == b.count(’1’):
        b += b[-1]
    elif b.count(’0’) < b.count(’1’):
        b += ’0’
    else:
        b += ’1’

    r = int(b, 2)
    if r % 3 == 0 and r % 6 != 0:
        print(n)

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