Description
Write an algorithm which computes the number of trailing zeros in n factorial.
Example
11! = 39916800, so the out should be 2
Challenge
O(log N) time
Answer
1 /* 2 * @param n: A long integer 3 * @return: An integer, denote the number of trailing zeros in n! 4 */ 5 long long trailingZeros(long long n) { 6 // write your code here, try to do it without arithmetic operators. 7 if(n<5){ 8 return 0; 9 } 10 else{ 11 return n/5 + trailingZeros(n/5); 12 } 13 }
Tips
This solution is implemented by a recursive method, we can also use a loop method to solve this problem.
1 /* 2 * @param n: A long integer 3 * @return: An integer, denote the number of trailing zeros in n! 4 */ 5 long long trailingZeros(long long n) { 6 // write your code here, try to do it without arithmetic operators. 7 long long result = 0; 8 while ( n > 0) 9 { 10 result += n/5; 11 n /= 5; 12 } 13 14 return result; 15 }