← Все вопросы

Задание 14 ЕГЭ: как посчитать сумму цифр числа в другой системе счисления?

Задан 9 месяцев назад719 просмотров3 ответа
13

В задании 14 часто просят: записали число в системе с основанием, скажем, 5, и надо найти сумму его цифр в этой записи (или сколько в ней значащих нулей). Перевод вручную долго и ошибаюсь. Как это аккуратно сделать на питоне?

3 ответа

15
✓ Принятый ответ — помог автору

Сумма цифр в системе с основанием b — это просто остатки от деления, которые ты складываешь, деля число на b нацело в цикле:

def sum_digits(n, b):
    s = 0
    while n > 0:
        s += n % b      # последняя цифра в системе b
        n //= b         # отбрасываем её
    return s

# например, найти сумму цифр значения выражения в 5-ричной системе
val = 5**8 + 3*5**5 + 7
print(sum_digits(val, 5))

Точно так же n % b даёт цифры по одной, если надо посчитать их количество или число нулей. Никакого ручного перевода.

Тихон Ко остатки рулят, дошло наконец 🙏 · 9 месяцев назад
7

n % b — цифра, n //= b — сдвиг. Складываешь остатки в цикле while.

3

Если основание <= 36, можно вообще через строку и int с другим основанием, но цикл с остатками надёжнее и понятнее.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект