题目:
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
提示:
此题要求出n阶乘的结尾零的个数。因为当且仅当阶乘中出现了一对2和5,才会在结尾出现一个0,而2的个数又远小于5,因此可以计算5出现的次数。一种方法就是每次递增5,计算因数5的个数。还有一种更快的方法是借用以5为底的对数。具体可看代码。
代码:
class Solution { public: int trailingZeroes(int n) { int step = log(n) / log(5); int count = 0; for (int i = 1; i <= step; ++i) { count += (n / pow(5, i)); } return count; } };