codewars Number of trailing zeros of N!

Write a program that will calculate the number of trailing zeros 
in a factorial of a given number.

N! = 1 * 2 * 3 * 4 … N

zeros(12) = 2 # 1 * 2 * 3 .. 12 = 479001600 
that has 2 trailing zeros 4790016(00) 

Be careful 1000! has length of 2568 digital numbers.

题目是在求阶乘的末尾0的数目。黑体部分提示我们不能算出结果再算0的个数。事实上,末尾产生一个零阶乘的数就可以分离出一个2*5,阶乘的式子里边分离2的个数比分离5的个数多得多,所以1 * 2 * 3 * 4 … N式中有几个5的倍数,就可以在结尾产生几个零。

public static int zeros(int n){

    int a = 0;

    for(int  i = 0; i < n; i++){

        int j = i;

        if(j % 5 == 0) {

            a++;

            j /=5;//检查j可以分离出几个5;

        }

    }

    return a;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值