1 mod 5 = 1
16 mod 5 = 1
Следовательно, 16^n mod 5 = 1, где n - любое целое неотрицательное число
Отсюда следует, что при любой перестановке цифр шестнадцатеричного числа остаток от его деления на 5 не изменится
Считаем сумму цифр шестнадцатеричного числа и берем остаток от ее деления на 5, это и будет результат
Вот это условие непонятно:
"если пользователь ввел 45, то надо набрать СУММУ кратностей равную 70 (1 коробка по 70, потому что в приоритет ставится дать меньшее число монет)"
Если без него, то решение вот такое (для 45 ответ будет 60):
def f(v):
n=(v+9)//10
if n<7: n=(n+2)//3*3
if n in (8,11): n+=1
return n*10