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

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

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

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

Задача 1#62655

Операнды арифметического выражения записаны в системе счисления с основанием 21.

ABC1x021 + Dx9821

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

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

Решение программой:

Даны два числа в 21  -ричной системе счисления: ABC1x021  и Dx9821  , в которых символ x обозначает неизвестную цифру из алфавита этой системы. Поскольку основание 21  больше 10  , то цифры от 10  и выше обозначаются буквами латинского алфавита: a соответствует 10  , b — 11  , и так далее до k, которая обозначает 20  . Мы знаем, что x может быть любой из этих цифр от 0 до k, и для перебора всех возможных значений удобно создать строку с символами 0123456789abcdefghijk. Затем мы организуем цикл for x in a, который на каждой итерации подставляет одну из этих возможных цифр вместо x в оба числа. Чтобы преобразовать числа из 21  -ричной записи в десятичную, мы используем встроенную функцию int(строка, 21), где строка — это текстовое представление числа в 21  -ричной системе. Например, при x = ’5’ первое число формируется как ’abc1’ + x + ’0’, то есть получается строка ’abc150’, и преобразуется в десятичную систему как int(’abc150’, 21). Аналогично, второе число формируется как ’d’ + x + ’98’ и тоже переводится в десятичное значение через int. После получения обоих чисел мы находим их сумму s1 + s2 и проверяем, делится ли она на 65, выполняя проверку if (s1 + s2) % 65 == 0. Если условие выполняется, значит, текущая цифра x подходит, и мы выводим результат деления суммы на 65 при помощи (s1 + s2) // 65. Поскольку перебор значений x идёт от наименьшего возможного, первый найденный результат будет соответствовать минимальному значению x, которое удовлетворяет условию задачи.

# Определяем алфавит 21-ричной системы счисления: от 0 до 9, затем a=10, b=11 и т.д., k=20
a = "0123456789abcdefghijk"

# Перебираем все возможные значения x из алфавита системы
for x in a:
    # Формируем строку первого числа $ABC1x0_{21}$, подставляя текущее значение x
    # Затем переводим её в десятичное число функцией int(строка, 21)
    s1 = int("abc1" + x + "0", 21)

    # Формируем строку второго числа $Dx98_{21}$ с подставленным значением x
    # Также переводим в десятичную систему
    s2 = int("d" + x + "98", 21)

    # Проверяем, делится ли сумма чисел на 65
    if (s1 + s2) % 65 == 0:
        # Если делится, выводим частное от деления суммы на 65
        print((s1 + s2) // 65)

Ответ: 664864

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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