Пусть задано шестнадцатеричное число. Рассмотрим все шестнадцатеричные числа, которые можно получить из заданного перестановками цифр (при этом перестановки, в которых на первом месте оказывается 0, из рассмотрения исключаются, а исходное число, наоборот, включается). Для каждого такого числа считаем остаток от его деления на 5. Требуется найти среднее арифметическое таких остатков всех рассматриваемых чисел. Формат ввода Входные данные содержат одно шестнадцатеричное число, состоящее из не более чем 20 знаков. Цифры, большие 9, обозначаются строчными латинскими буквами от ‘a’ до ‘z’. Гарантируется, что первой цифрой числа не является 0. Формат вывода Выведите среднее арифметическое остатков от деления всех корректных (то есть не имеющих ведущих нулей) чисел, образованных перестановками цифр в данном числе, от деления на 5, с точностью не хуже 10−9. Пример 1ВводВывод222 1Пример 2ВводВыводaaa 0
Answers & Comments
Verified answer
Решение задачи будет гораздо проще, если заметить, что остаток от деления шестнадцатеричного числа на 5 совпадает с остатком от деления на 5 его суммы цифр.
Действительно, доказываем по индукции:
У любой перестановки сумма цифр такая же, так что и остатки от деления на 5 совпадают. Так что осталось найти сумму цифр исходного числа и найти остаток от деления её на 5, это и будет ответом.
Python 3:
digits = "0123456789abcdef"
n = input()
s = sum(digits.index(digit) for digit in n)
print(s % 5)