leetcode 之Factorial Trailing Zeroes

来源:互联网 发布:新天龙八部官方软件 编辑:程序博客网 时间:2024/05/22 05:30

这道题用到的数字的知识。判断结果有多少个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;
    }
}
*/

0 0
原创粉丝点击