题目:

172. 阶乘后的零

给定一个整数 n,返回 n! 结果尾数中零的数量。

示例 1:

输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
示例 2:

输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n)

解析:

代码:

import java.util.*;

public class code172 {
    // public static int trailingZeroes(int n) {
    // if (n == 0) {
    // return 0;
    // } else {
    // return (n / 5) + trailingZeroes(n / 5);
    // }
    // }
    public static int trailingZeroes(int n) {
        int ans = 0;
        while (n > 0) {
            ans += n / 5;
            n /= 5;
        }
        return ans;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int x = trailingZeroes(n);
        System.out.println(x);
        sc.close();
    }
}

运行结果:

参考:

  1. n!阶乘末尾有多少个零0
  2. 好吧,又是两分钟看完一道投机取巧的算法题