题解 | #阶乘末尾0的数量#

阶乘末尾0的数量

http://www.nowcoder.com/practice/aa03dff18376454c9d2e359163bf44b8

一.题目描述
给定一个非负整数N,返回N!结果的末尾为0的数量。
N!是指自然数N的阶乘,即:
二.算法(数学)
因为一个数的阶乘只有是5或5的倍数乘以2的时候才会出现尾随零,并且从阶乘中可以看出来2的个数远大于5的个数,所以由此可以推得求一个数的尾随零数的个数只需看它能除以几个5就有几个零了。
图片说明
下面是完整代码:

class Solution {
public:
    long long thenumberof0(long long n) {
        long long int ans=0;//可以除的5的个数
        long long int k=5;
        while(n>=k){
            ans+=n/k;
            k=k*5;
        }
        return ans;
    }
};

时间复杂度: 每次都除以一个5所以复杂度是log级别的
空间复杂度: 没有额外空间消耗
优缺点:实现简单,但是思考过程复杂
三.算法(逻辑)
从算法二可以知道本质就是求可以整除5的个数,可以得到
其中[N/5]表示不大于N中对5倍的贡献一个5,[N/5/5]表示不大于N的数中对5*5的倍数贡献一个5......
下面是完整代码:

class Solution {
public:
    long long thenumberof0(long long n) {
        long long int ans=0;
        while(n){
            ans+=n/5;
            n/=5;
        }
        return ans;
    }
};

时间复杂度: 每次都除以一个5所以复杂度是log级别的
空间复杂度: 没有额外空间消耗
优缺点:实现简单,思考起来也比较简单

全部评论

相关推荐

2024-12-02 14:06
已编辑
门头沟学院 Java
双非女硕非科班,在艰难的秋招中一共找了两个工作。每找到一个就会跟家里大吵一架,第一个offer(一线城市市场化国企,岗位对口,合同工,工资还行)嫌离家太远,说我不要家里人了。当时没有别的offer,吵完架签了之后,家里开始让去考文职考公务员事业单位,于是秋招论文国考三手抓。考完国考收到了第二个offer(小sp,新能源车企,比第一个offer离家近了一半的距离,工资翻倍),很心动准备去,和家里说了之后又大吵一架,嫌新能源车厂不稳定,效益不好,离他们看不上眼的前男友家近,坚决反对,说女生不要以赚钱为目的,车企还不如离家远那个国企,又不让签。我爸就是小微民企工作的,我也知道他工作累,但是吵架吵得真的很想④。家里是二线省会,经济条件尚可,因此父母才觉得他们的女儿可以不用以赚钱为目的。但是毕竟也不是大富大贵,我不希望我以后还要啃老,我希望他们辛苦赚的钱用来给自己养老。他们首先希望我在家乡非省会某城市去当大专中专老师(轻松稳定好找对象)。其次是公务员(进了体制好找对象),文职(性别不行,专业不好,也不是双一流,能报的岗位很少,但是他们不管,说事在人为,先考再说,进去了好找对象。根本解释不通),国央企(我学历一般,基本没有找到)。不知道怎么办,是我的问题还是家里的问题。我父母眼光一般都是准的,但是为什么工作阻碍这么多?
少冰无糖可乐爱好者:不要听女孩子不用赚钱这种话,有钱才有话语权,啃老没前途
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

更多
牛客网
牛客企业服务