Тема 14. Системы счисления

14.02 Поиск цифр(-ы) числа

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела системы счисления
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#57750

Некоторое число X из десятичной системы счисления перевели в системы счисления с основаниями 16, 8, 4. Часть символов при записи утеряна. Позиции утерянных символов обозначены знаком *:

X= ∗3∗16 = 4 ∗18 = ∗ ∗∗∗ 14

Определите X.

Показать ответ и решение

В этой задаче нам дано число X в десятичной системе, которое частично известно в других системах счисления: 316  , 4 ∗18  и ∗∗ ∗∗14  , где * обозначает утерянные символы. Наша цель — определить X, используя информацию о совпадении цифр в различных системах. Для этого мы создаём вспомогательную функцию fr(num), которая преобразует десятичное число num в строковое представление в четверичной системе счисления. Внутри функции мы используем цикл while, где на каждом шаге берём остаток от деления числа на 4 (n % 4) для получения младшего разряда и добавляем его в начало строки t, после чего делим n на 4 для перехода к следующему разряду. Эта функция позволяет сравнивать конкретные позиции цифр числа в четверичной системе.

Основной алгоритм заключается в переборе всех возможных чисел X от 0 до некоторого верхнего предела (здесь 5000). Для каждого X мы получаем его шестнадцатеричное (hex(x)[2:]), восьмеричное (oct(x)[2:]) и четверичное (fr(x)) представления и проверяем соответствие известным позициям: средняя цифра в шестнадцатеричной записи равна ’3’, первая и последняя цифры в восьмеричной записи равны ’4’ и ’1’ соответственно, а последняя цифра в четверичной записи равна ’1’. Если все условия выполняются одновременно, это означает, что найдено число X, удовлетворяющее всем системам счисления, и мы его выводим.

# Функция для преобразования числа из десятичной системы в четверичную строку
def fr(num):
    n = num  # Сохраняем исходное число в отдельной переменной
    t = ’’   # Строка для накопления результата
    while n > 0:
        # Берём остаток от деления на 4, чтобы получить младший разряд в четверичной системе
        t = str(n % 4) + t  # Добавляем цифру в начало строки
        n = n // 4          # Делим число на 4 для перехода к следующему разряду
    return t

# Перебор всех возможных чисел X от 0 до 4999
for x in range(5000):
    hx = hex(x)[2:]  # Получаем шестнадцатеричное представление числа в виде строки, без префикса ’0x’
    ot = oct(x)[2:]  # Получаем восьмеричное представление числа в виде строки, без префикса ’0o’
    f = fr(x)        # Получаем четверичное представление числа в виде строки
    # Проверяем соответствие известным цифрам во всех системах
    if (len(hx) == 3 and hx[1] == ’3’  # Средняя цифра в шестнадцатеричной записи равна ’3’
            and len(ot) == 3 and ot[0] == ’4’ and ot[2] == ’1’  # Первая и последняя цифры в восьмеричной записи
            and len(f) == 5 and f[-1] == ’1’):  # Последняя цифра в четверичной записи равна ’1’
        print(x)  # Если все условия выполняются, выводим найденное число X

Варианты правильных ответов:
  1. 305
  2. 313

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!