Задание:
Значение арифметического выражения
3 ∙ 31258 + 2 ∙ 6257 – 4 ∙ 6256 + 3 ∙ 1255 – 2 ∙ 254 – 2024
записали в системе счисления с основанием 25. Сколько значащих нулей содержится в этой записи?
Решение задания в Python:
number = 3*3125**8 + 2*625**7 – 4*625**6 + 3*125**5 – 2*25**4 – 2024
cnt = 0
while number > 0:
if number % 25 == 0:
cnt += 1
number = number // 25
print(cnt)<
Ответ: 9
Благодаря встроенной длинной арифметике в языке программирования Python возможна запись и хранение очень больших чисел, как это демонстрируется в первой строке программы:
number = 3*3125**8 + + 2*625**7 – 4*625**6 + + 3*125**5 – 2*25**4 – 2024.
Во второй строке программы создаётся и инициализируется нулём счётчик количества искомых цифр: cnt = 0
Цифры числа number в 25-ричной системе счисления извлекаются в цикле while, продолжающем итерации, пока значение переменной number больше нуля. Если очередная цифра числа number в 25-ричной системе счисления равна нулю, значение счётчика cnt инкрементируется:
if number % 25 == 0:
cnt += 1
После условного оператора значение переменной number целочисленно делится на 25, чтобы перейти к следующей цифре числа number в 25-ричной системе счисления.
Возможен вывод десятичных представлений всех цифр числа:
number = 3*3125**8 + 2*625**7 – 4*625**6 + 3*125**5 – 2*25**4 – 2024
while number > 0:
print(number % 25)
number = number // 25
Вывод программы:
1 19 21 24 22 24 24 14 0 0 0 0 21 24 1 0 0 0 0 0 3
В случае вывода десятичных представлений всех цифр числа ответ на задание следует определить вручную – для решения представленного задания нужно подсчитать количество нулей.
Для задачи подсчёта количества различных цифр числа удобным решением является использование множества – структуры данных, сохраняющей каждое значение только один раз:
number = 3*3125**8 + 2*625**7 – 4*625**6 + 3*125**5 – 2*25**4 – 2024
s = set()
while number > 0:
s.add(number % 25)
number = number // 25
print("В 25-ричном числе", len(s), "различных цифр:", s)
Вывод программы:
В 25-ричном числе 8 различных цифр: {0, 1, 3, 14, 19, 21, 22, 24}
Здесь мощность множества s получена с помощью функции len. Десятичные представления 25-ричных цифр числа number выведены в фигурных скобках:
{0, 1, 3, 14, 19, 21, 22, 24}
Для создания пустого множества использован конструктор set() без параметров, для добавления элемента в множество используется метод add().