← Все вопросы
Задание 14 ЕГЭ: как посчитать сумму цифр числа в другой системе счисления?
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 с другим основанием, но цикл с остатками надёжнее и понятнее.
Ваш ответ
Войдите, чтобы ответить на вопрос.