Показать сообщение отдельно
  #3 (permalink)  
Старый 29.09.2017, 22:26
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

из ссылки рони надо взять функцию 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.
Ответить с цитированием