Top.Mail.Ru
Ответы

ЕГЭ ПО ИНФОРМАТИКЕ 11 КЛАСС PYTHON Помогите пожалуйста с решением задачи

Автомат обрабатывает десятичное натуральное число N по следующему алгоритму.
1. Строится двоичная запись числа,
2. К полученному числу справа дописывается 0, если в числе единиц больше, чем нулей, и 1 в обратном случае.
3. Действие 2 повторяется еще раз.
4. Из середины двоичного числа убирается 2 разряда, если количество разрядов получилось четным, и 3 разряда, если нечетным.
5. Полученное число переводится в десятичную систему счисления и является результатом работы автомата.
Сколько различных значений может получиться в результате работы, если автомат обработает все значения N, которые принадлежат отрезку [100; 200] ?

По дате
По рейтингу
Аватар пользователя
Ученик
12345678910111213141516171819202122
 st = set() 
for n in range(100, 201): 
    r = bin(n)[2:] 
 
    if r.count('1') > r.count('0'): 
        r += '0' 
    else: 
        r += '1' 
 
    if r.count('1') > r.count('0'): 
        r += '0' 
    else: 
        r += '1' 
 
    if len(r) % 2 == 0: 
        r = r[:len(r)//2 - 1] + r[len(r)//2 + 1:] 
    else: 
        r = r[:len(r) // 2 - 1] + r[len(r) // 2 + 2:] 
 
    st.add(int(r, 2)) 
 
print(len(st)) 


Видео по теме