LintCode 2. 尾部的零

来源:互联网 发布:淘宝网怎样修改评价 编辑:程序博客网 时间:2024/05/18 14:24

       这道题,分析如下,1到n的阶乘末尾的0数有多少个,只需要统计出n分别除以5,25,125...等5的整数次幂即可,然后相加就可得到n末尾包含的0的个数。每次5出现首先2,4都比5小,所以对于新出现的5的整数次幂的倍数时,前面肯定已经存在了足够的2使得2*5=10,从而在末尾产生新的0。

我的实现过程如下:

class Solution {public:    /*     * @param n: A long integer     * @return: An integer, denote the number of trailing zeros in n!     */    long long trailingZeros(long long n) {        // write your code here, try to do it without arithmetic operators.        long long sum=0;        while(n!=0)        {            sum+=n/5;            n=n/5;        }        return  sum;    }};