leetcode 172:阶乘后的零

题目:

算法思想:尾数中零的个数代表阶乘后的结果包含了多少个10相乘,由于我们无法从阶乘的结果入手,所以需要从因数上入手,判断有多少个10相乘。10=2*5,所以需要找有多少对2*5,而对于自然数来说一个偶数有多个2,而5只来自5 10 15 20 25等等,所以只需要找5的个数。需要注意的是25可以拆成2个5,125可以拆成3个5,所以运算过程应该是先除以5找出单个5的个数,然后把n变成原来的1/5,继续除以5,这是判断25的倍数,接着继续同样的操作,直到n==0。举个例子,假如n是126,126/5==25,表示以5累加的话有25个5,接着n = n/5变成了25,25/5 == 5,这表示以25累加的有5个,分别是25 50 75 100 125,接着n=n/5变成了5,5/5 == 1,这表示以125累加的有1个,是125,把这些累加起来就是结果了。

代码: 

    int trailingZeroes(int n) {
        int result = 0;
        while(n != 0)
        {
            result += n/5;
            n = n/5;
        }
        return result;
    }
发布了137 篇原创文章 · 获赞 19 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wh_computers/article/details/99431860
今日推荐