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"); }