题链接:https://leetcode-cn.com/problems/factorial-trailing-zeroes/
题描述:
思路:
因为题目要求 O(log n) 的时间复杂度,所以不能通过计算 n!,然后计算它的末尾0的个数来求解。
n! = k * (10^m),k 为不能被10整除的数,m 就是 n! 末尾0的个数。
10 = (2 * 5)^m,所以问题就变成了求2和5的指数,因为能被2整除的数比能被5整除的数多,所以我们求出5的指数即可。
设 n = 25,从1到25,能被5整除的数分别是:5,10,15,20,25。
其中:
5^1 + x = 5;
5^1 + x = 10;
5^1 + x = 15;
5^1 + x = 20;
5^2 + x = 25;
将5的指数相加,m = 1 + 1 + 1 + 1 + 1 + 2 = 6。即25!末尾有6个0。