leetcode 之Factorial Trailing Zeroes

本文详细介绍了如何通过C、C++和Java三种语言实现阶乘末尾零数的计算,利用数学原理判断5的因子数量决定最终结果。

这道题用到的数字的知识。判断结果有多少个0,就是多少个10,而10=2×5,所以就是判断有min(2的个数,5的个数)。因为是求阶乘,只要有5,就意味着有4和2,所以2的个数是多于5个的,也就是说,5的个数决定了算出的结果有多少个0.

(1)C语言实现

int trailingZeroes(int n) {
    if(n==0)
        return 0;
    return n/5+trailingZeroes(n/5);
}
/*
int trailingZeroes(int n) {
    int result = 0;
    for(long i=5;i<=n;i=i*5)
        result +=n/i;
    return result;
}
*/

(2)C++实现

class Solution {
public:
    int trailingZeroes(int n) {
       return n==0?0:n/5+trailingZeroes(n/5);
    }
};
/*
class Solution {
public:
    int trailingZeroes(int n) {
        int result = 0;
        for(long long i=5;(n/i)>0;i*=5)
            result += n/i;
        return result;
    }
};
*/

(3)java实现

public class Solution {
    public int trailingZeroes(int n) {
        if(n==0)
            return 0;
        return n/5+trailingZeroes(n/5);
    }
}
/*
public class Solution {
    public int trailingZeroes(int n) {
        int result = 0;
        for(long i=5;i<=n;i*=5)
            result += n/i;
        return result;
    }
}
*/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值