РЕШЕНИЕ 14 НОМЕРОВ (1/4)
Условие задачи
Значение арифметического выражения 15625²⁰ – 3125¹⁵ · 25¹⁰ + 625⁵ – 2000 записали в системе счисления с основанием 25. Сколько значащих нулей содержится в этой записи?
Тип задачи
Это прямой перевод: вычисляем выражение в десятичной, переводим в нужную СС, считаем цифры. Для оснований > 9 используем перевод через список.
Алгоритм решения
1. Вычисляем выражение: Python умеет работать с большими числами: val = 15625**20 - 3125**15 * 25**10 + 625**5 - 2000
2. Переводим в нужную СС: Для основания 25 встроенные bin/oct/hex не подойдут. Пишем функцию: остаток от деления на 25 — очередная цифра, целая часть — следующее число.
3. Считаем нули: Цифры хранятся в списке как числа: digits.count(0).
Функция перевода в любую СС
Для оснований > 9 цифры бывают > 9 (например 14 в 25-ричной). В строке это путаница (114 — это «1,14» или «11,4»?). Поэтому — список:
1 2 3 4 5 6
Пример: f(29, 15) → [1, 14]
Полное решение
1 2 3 4 5 6 7 8 9 10
Другой способ: считаем прямо в цикле
Можно не собирать весь список, а сразу проверять остаток в цикле while. Ведь n % b — это и есть очередная цифра. Если она равна 0, прибавляем счётчик:
1 2 3 4 5 6 7
Здесь мы не строим список вообще — просто на каждом шаге смотрим: если остаток от деления равен 0, значит текущая цифра — ноль, прибавляем cnt += 1. Результат тот же, но без лишнего списка.
Ответ: 38
Решите задачи, чтобы усвоить материал
Решить в Личном КабинетеЗначение арифметического выражения
15⋅49\(^{237}\) +37⋅343\(^{500}\)−14⋅7\(^{35}\)
Записали в системе счисления с основанием 49. Определите количество цифр 0 в записи этого числа.
Значение арифметического выражения: \(6×144 ^{26} +11×12 ^{75} −48\) записали в системе счисления с основанием 12. Сколько цифр «B» в этой записи?
