Think about that.. n! = n * (n-1) * (n-2) ..... *1

Zeros happened when each of them can be divided by 10. And 10 = 2 * 5. 2 is much more than 5 in the number mutilpication. Then just use 5 as the factor.

But one more thing need to notice:

Use n /= 5 for every loop instead of i += 5; It can overflow.

 1 class Solution {
 2 public:
 3     int trailingZeroes(int n) {
 4         int result = 0;
 5         for (int i = 5; i <= n; n /= 5) {
 6             result += n/i;
 7         }
 8         return result;
 9     }
10 };

 

posted on 2015-03-19 09:16  keepshuatishuati  阅读(121)  评论(0编辑  收藏  举报