14.02 Поиск цифр(-ы) числа
Ошибка.
Попробуйте повторить позже
Дано арифметическое выражение, где является любой цифрой от 0 до 9.
Определите, при каком значении значение выражения в десятичной системе счисления получится целым.
Для данного выражения определите, сколько цифр
будет записано в шестнадцатеричной системе
счисления.
Даны два числа в шестнадцатеричной системе счисления: и
, где 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’))
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

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

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

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

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

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!