末尾0的个数_牛客网

题目:末尾0的个数
输入一个正整数n,求n!(即阶乘)末尾有多少个0。

最简单的思路就是输入一个正整数,先求出它的阶乘,然后求其末尾有多少个0,但是这种方法会产生溢出,所以在此给出另一种方法。

我们在计算n的阶乘时,实际上就是把所有小于等于n的正整数分解成质因数,然后再将其乘到一起,那么末尾0的个数实际上就是2*5的个数,而2的个数明显是很多很多的,所以问题就转化成了5的个数。

而只有5的倍数才有5这个因数,所以问题就简化为小于等于n的数中有多少个数是5的倍数,当然对于25,125等含有多个因子5的数要单独考虑。

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt(),result=0;
        for(int i=5;i<=n;i*=5){
            result+=n/i;
        }
        System.out.println(result);
    }
}
发布了71 篇原创文章 · 获赞 2 · 访问量 7480

猜你喜欢

转载自blog.csdn.net/weixin_42512675/article/details/103108842