LeetCode(六)数字操作-#172

172. 阶乘后的零

1.题目描述及示例

  1. 题目描述
    给定一个整数 n,返回 n! 结果尾数中零的数量。
  2. 示例
    在这里插入图片描述

2.题解思路及代码

  1. 思路
    (1)在阶乘过程中,相乘的数有因子2和5,相乘结尾才有零。例如:4!=24,末尾没有0,因为2,3,4中没有数的因子是5。例如5!=120,末尾有一个0,因为有一个2*5。
    (2)遇到有因子是2的数比因子是5的数要多得多,只要知道阶乘的数中有多少数能被5整除,这些数累计共有多少个因子5就行。例如:34!末尾7个0。其中含有因子5的数为:5,10,15,20,25,30;这些数含的因子5的个数为1,1,1,1,2,1,总共7个,所以末尾7个0。
    (3)但如果对每一个阶乘的数循环遍历的话就太慢了,但可以让阶乘的数不断除以5,然后累加除法后的结果。以34!为例,34/5=6,6/5=1,1<5,除法结束,累加的结果为6+1=7。

  2. 代码

    public int trailingZeroes(int n) {

        int num=0;
        while (n>=5)
        {
            num+=n/5;
            n/=5;
        }
        return num;
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值