14.02 Поиск цифр(-ы) числа
Ошибка.
Попробуйте повторить позже
Какая максимальная сумма цифр может получиться в девятиричной записи числа
если вместо x и y может стоять ровно 1 цифра, x и y не могут быть одинаковыми.
В задаче даны два числа в различных системах счисления: уменьшаемое и вычитаемое
.
Переменные x и y обозначают неизвестные цифры в соответствующих системах счисления, причём каждая из них
может принимать любое допустимое для своей системы значение, но при этом x и y не могут быть равны. Нам
требуется найти такую комбинацию этих цифр, при которой сумма цифр результата вычитания, записанного в
девятиричной системе счисления, будет максимальной. Алгоритм начинается с того, что мы создаём переменную mx,
которая будет хранить найденное на текущий момент максимальное значение суммы цифр. Далее мы перебираем все
возможные значения x с помощью цикла for x in range(31), так как в 31-ричной системе счисления цифры могут
принимать значения от 0 до 30 включительно. Для каждого значения x мы запускаем вложенный цикл for y in
range(17), перебирающий все возможные значения y от 0 до 16 включительно, так как y находится в числе в 17-ричной
системе. Перед выполнением вычислений мы проверяем условие if x != y, чтобы исключить варианты, когда цифры x и
y совпадают.
Далее мы переводим каждое число из своей системы счисления в десятичную. Для это делается
разложением числа по степеням
:
. Аналогично переводим
в десятичную систему:
. После этого находим разность этих чисел: s = s1
- s2. Теперь нам нужно вычислить сумму цифр этого результата в девятиричной системе счисления. Для этого мы
создаём переменную d = 0 и запускаем цикл while s > 0, где на каждой итерации прибавляем к d последнюю цифру
числа в девятиричной записи, полученную как s % 9, а затем удаляем эту цифру, выполняя целочисленное деление s =
s // 9. Когда сумма цифр вычислена, мы сравниваем её с текущим максимальным значением mx и при
необходимости обновляем mx, используя mx = max(d, mx). После перебора всех возможных пар значений
x и y в mx будет храниться максимальная возможная сумма цифр, которую мы выводим с помощью
print(mx).
mx = 0 # Изначально максимальная сумма цифр равна 0 # Перебираем все возможные значения x в 31-ричной системе счисления (от 0 до 30) for x in range(31): # Перебираем все возможные значения y в 17-ричной системе счисления (от 0 до 16) for y in range(17): # Проверяем, что x и y не равны if x != y: # Переводим уменьшаемое $35x76x_{31}$ в десятичную систему s1 = 3 * 31**5 + 5 * 31**4 + x * 31**3 + 7 * 31**2 + 6 * 31 + x # Переводим вычитаемое $11y4y_{17}$ в десятичную систему s2 = 17**4 + 17**3 + y * 17**2 + 4 * 17 + y # Находим разность двух чисел s = s1 - s2 # Переменная для хранения суммы цифр в девятиричной записи d = 0 # Вычисляем сумму цифр числа в девятиричной системе while s > 0: d += s % 9 # Прибавляем последнюю цифру (остаток от деления на 9) s = s // 9 # Убираем последнюю цифру (целочисленное деление на 9) # Обновляем максимальное найденное значение суммы цифр mx = max(d, mx) # Выводим максимальную сумму цифр print(mx)
Специальные программы

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

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

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

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

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

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