из ссылки рони надо взять функцию getFactZeros
для '23!*24!!*25!*26!!*27!!' результат будет равен
getFactZeros(23) + getFactZeros(12) + getFactZeros(25) + getFactZeros(27)
и вот почему:
1) 26!!*27!! = 27! , тут все понятно
2) 24!! - ни что иное как 2^12 * 12!. Мы считаем сколько раз пятерка входит в множители. В степени двойки её нет, тут остается только 12!
на самом деле ноль дает пара сомножителей (2,5), но в любом факториале двоек больше, пятерки в дефиците, потому только их и считаем. Как следствие, можно просто складывать результаты getFactZeros, посколько во всех компонентах не будет "свободных" пятерок, и перемножение компонентов не даст дополнительных нулей.
Последний раз редактировалось Alexandroppolus, 29.09.2017 в 22:32.
|