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

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

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

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

Задача 1#56480

Дано арифметическое выражение, где x  является любой цифрой от 0 до 9.

11x79320 + Bx7x320 − 111x6 + log2(2x6)10

Определите, при каком значении x  значение выражения в десятичной системе счисления получится целым. Для данного выражения определите, сколько цифр F  будет записано в шестнадцатеричной системе счисления.

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

Даны два числа в шестнадцатеричной системе счисления: 1678x1216  и 1x02416  , где x — неизвестная цифра из алфавита 16-ричной системы (0–15). Наша задача — найти наименьшее значение x, при котором сумма этих чисел кратна 15. Для решения задачи мы используем полный перебор возможных значений x, подставляя каждое поочерёдно. Сначала создаём вспомогательную функцию to_16(x), которая преобразует десятичное число x в строковое шестнадцатеричное представление. Для этого мы последовательно берём остаток от деления числа на 16 (x % 16), определяем соответствующий символ из алфавита 0123456789ABCDEF и добавляем его в начало строки, после чего делим x на 16 для перехода к следующему разряду. Эта функция нужна, чтобы в конце можно было работать с шестнадцатеричной записью результата. Другая вспомогательная функция to_10(num, i) предназначена для вычисления десятичного значения трёхзначного числа, где i — неизвестная цифра. Сначала число num приводим к строке, затем формируем целое число, комбинируя i с фиксированной цифрой, и вычисляем десятичное значение через разложение по степеням основания системы: каждая цифра умножается на соответствующую степень i и суммируется.

Далее в основном цикле мы перебираем все возможные значения x от 0 до 9 (for i in ’0123456789’), подставляем их в соответствующие позиции в исходных числах, преобразуем полученные строки в десятичные числа с помощью int(строка, 16), суммируем их и корректируем результат с помощью вызовов вспомогательных функций и логарифма, если это требуется по алгоритму. После вычислений проверяем, является ли результат целым числом (if int(w) == w). Если условие выполняется, преобразуем результат обратно в шестнадцатеричную строку с помощью to_16(int(w)) и считаем количество цифр F, что даёт дополнительную информацию о корректности подстановки x. Таким образом, перебором всех вариантов мы находим минимальное значение x, удовлетворяющее условию делимости суммы на 15.

from math import log

# Функция преобразования числа из десятичной системы в шестнадцатеричную строку
def to_16(x):
    alf = ’0123456789ABCDEF’  # Алфавит шестнадцатеричной системы
    s = ’’  # Пустая строка для накопления результата
    while x > 0:
        # Берём остаток от деления на 16, чтобы получить последнюю цифру в шестнадцатеричной системе
        s = alf[x % 16] + s  # Добавляем символ в начало строки
        x = x // 16  # Делим число на 16 для перехода к следующему разряду
    return s

# Функция для преобразования трёхзначного числа с неизвестной цифрой i в десятичное
def to_10(num, i):
    num = str(num)  # Преобразуем число в строку для доступа к отдельным цифрам
    i = int(i + ’6’)  # Комбинируем i с ’6’ и преобразуем в целое число
    # Вычисляем десятичное значение числа через разложение по степеням основания
    return int(num[0]) * i**2 + int(num[1]) * i + int(num[2])

# Перебираем все возможные значения x от 0 до 9
for i in ’0123456789’:
    # Формируем и суммируем различные числа с подставленной цифрой i
    w = int(’11’ + i + ’793’, 20) + int(’B’ + i + ’7’ + i + ’3’, 20) - \
        to_10(111, i) + log(int(’2’ + i + ’6’), 2)
    # Проверяем, является ли результат целым числом
    if int(w) == w:
        # Если да, преобразуем результат в шестнадцатеричную строку и считаем количество ’F’
        print(to_16(int(w)).count(’F’))

Ответ: 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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