14.02 Поиск цифр(-ы) числа
Ошибка.
Попробуйте повторить позже
Операнды арифметического выражения записаны в системе счисления с основанием 21.
В записи чисел переменной обозначена неизвестная цифра из алфавита 21-ричной системы счисления.
Определите наименьшее значение
, при котором значение данного арифметического выражения в
десятичной системе счисления кратно 65. Для найденного значения
вычислите частное от деления значения
арифметического выражения на 65 и укажите его в ответе. Основание системы счисления в ответе указывать не
нужно.
Решение программой:
Даны два числа в -ричной системе счисления:
и
, в которых символ x обозначает
неизвестную цифру из алфавита этой системы. Поскольку основание
больше
, то цифры от
и выше
обозначаются буквами латинского алфавита: a соответствует
, b —
, и так далее до k, которая обозначает
.
Мы знаем, что x может быть любой из этих цифр от 0 до k, и для перебора всех возможных значений удобно создать
строку с символами 0123456789abcdefghijk. Затем мы организуем цикл for x in a, который на каждой итерации
подставляет одну из этих возможных цифр вместо x в оба числа. Чтобы преобразовать числа из
-ричной записи в
десятичную, мы используем встроенную функцию int(строка, 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)
Специальные программы

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

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

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

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

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

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