LintCode-2.尾部的零

题目

描述

设计一个算法,计算出n阶乘中尾部零的个数

样例

11! = 39916800,因此应该返回 2

解答

思路

所有乘数因子中,2*5出现一个0,2管够,所以只需要统计因子中有多少5。
每五个数出现一个5,每五个(五个数)多出现一个5……
对于n!,有n/5个一个五,n/5/5个多出现一个5……

比方说对于50!:
第一层 有5,10,15,20,25,30,35,40,45,50统计一遍有10个“一个五”
第二层有25,50 有两个五只统计了一遍,第二层统计“少算的”2个五。
如果有第三层(125的倍数)。继续统计“少算的”5

代码

class Solution {
    /*
     * param n: An desciption
     * return: An integer, denote the number of trailing zeros in n!
     */
    public long trailingZeros(long n) {
        // write your code here
        long num = 0;
        while(n>0){
            num+=(n/5);
            n/=5;
        }
        return num;
    }
};

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、实验目的 学习使用 weka 中的常用分类器,完成数据分类任务。 二、实验内容 了解 weka 中 explo...
    yigoh阅读 8,669评论 5 4
  • 一键克隆代码 在多因子量化投资体系中,具有稳定的预期收益,可解释的经济驱动理论,与其他因子的低相关性是选择alph...
    Ricequant米筐阅读 3,229评论 0 8
  • #初见 这是我第三次回到这里,这个好像是梦,但是又陌生地让人恐怖的地方。我看到的东西,不,这里的我并没有眼睛,这么...
    白一小舍阅读 347评论 0 1
  • 中国人的成长史几乎等同于考试史。这么多的考试都需要复习,都希望复习的东西在考试时能记住,那么提升记忆力就很重要了。...
    小丸子手机壳的杨云冰阅读 569评论 0 2