Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
解题思路:只有因子2和因子5相乘会产生10,同时因为因子2的数量大于因子5的数量,所以只需看序列中因子5的个数。它可以通过n/5得到,同时序列中还含有25,125,……这样的因子,其数量可以通过继续除5来得到。
实现代码:
/*****************************************************************************
* @COPYRIGHT NOTICE
* @Copyright (c) 2015, 楚兴
* @All rights reserved
* @Version : 1.0
* @Author : 楚兴
* @Date : 2015/2/6 16:21
* @Status : Accepted
* @Runtime : 7 ms
*****************************************************************************/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Solution {
public:
int trailingZeroes(int n) {
int count = 0;
while (n)
{
count += n / 5;
n /= 5;
}
return count;
}
};
int main()
{
Solution s;
for (int i = 1; i < 100; i++)
{
cout<<s.trailingZeroes(i)<<endl;
}
system("pause");
}