【LeetCode】172

Given an integer n, return the number of trailing zeroes in n!.

Note: Your solution should be in logarithmic time complexity.

Solution :计算包含的2和5组成的pair的个数,因为5的个数比2少,所以2和5组成的pair的个数由5的个数决定。 

  • 观察15! = 有3个5(来自其中的5, 10, 15), 所以计算n/5就可以。  

  • 但是25! = 有6个5(有5个5来自其中的5, 10, 15, 20, 25, 另外还有1个5来自25=(5*5)的另外一个5),
所以除了计算n/5, 还要计算n/5/5, n/5/5/5, n/5/5/5/5, ..., n/5/5/5,,,/5直到商为0。  

 1 class Solution {
 2 public:
 3     int trailingZeroes(int n) {
 4         int ret=0;
 5         while(n){
 6             ret += n/5;
 7             n /= 5;
 8         }
 9         return ret;
10     }
11 };
原文地址:https://www.cnblogs.com/irun/p/4705421.html