📋 Условие

Решения задач из ЕГЭ по информатике на системы счисления и логические выражения.

🔍 Подробное решение

Задания 14 ЕГЭ по информатике — системы счисления и логические выражения.

Типовые задачи:

1. Наибольшее значение x, при котором в троичной записи числа |3100 − x| содержится ровно 5 нулей. → Ответ: 2024

2. Количество цифр «4» в пятиричной записи выражения (5³⁶ + 5²⁴ − 25). → Ответ: 22

3. Количество цифр, превышающих 9, в 27-ричной записи числа. → Ответ: 2687

4. Сумма цифр, превышающих 3, в 7-ричной записи числа (51·7¹² − 7³ − 22). → Ответ: 65

5. Задачи на основание системы счисления — определяем минимальное основание, при котором число записано корректно.

6. Перевод между системами счисления с использованием Python:
```python
# Перевод в двоичную строку
b = bin(n)[2:]
# Перевод из строки в другое основание
int(s, base)
```

Ответы: 2024, 22, 2687, 65, 8, 4, 16, 8, 1, 4, 16, 13, 4

📚 Теория

Сложные задачи на системы счисления. Уравнения с неизвестными цифрами.

🐍 Шаблон Python

Python
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
def my_convert(number, system):
    result = ''
    while number > 0:
        result += alphabet[number % system]
        number //= system
    return result[::-1]

# Неизвестная цифра
for x in alphabet[:base]:
    A = int(f'1{x}51', base)
    B = int(f'3{x}2', base)
    if (A - B) % 4 == 0:
        M.append((A - B) // 4)
print(max(M))

# Две неизвестные
for x in alphabet[:8]:
    for y in alphabet[:8]:
        A = int(f'{x}01{y}4', 9)
        B = int(f'{x}{y}544', 8)
        if (A + B) % 89 == 0:
            M.append((A + B) // 89)
print(min(M))

🐍 Альтернативный способ

Способ 2
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
# Уравнение в разных СС
for p in range(10, 36 + 1):
    for x in alphabet[:p]:
        for y in alphabet[:p]:
            if int(f'24{x}9', p) + int(f'{y}{x}{y}3', p) == int(f'{x}4{y}0', p):
                print(int(x + y + y, p))

# Тип 2024 — подсчёт цифр
def f(n):
    s = ''
    while n > 0:
        s = str(n % 5) + s
        n = n // 5
    return s
for x in range(1, 2006):
    a = 5**150 + 5**98 - x
    if f(a).count('0') == 56:
        print(x)