计算n!的十进制表示最后有多少个0(南阳ACM_84)

来源:互联网 发布:javascript void中文 编辑:程序博客网 时间:2024/05/08 00:15
计算公式
    这里先给出其计算公式,后面给出推导过程。
    令f(x)表示正整数x末尾所含有的“0”的个数,则有:
      当0 < n < 5时,f(n!) = 0;

      当n >= 5时,f(n!) = k + f(k!), 其中 k = n / 5(取整)。


import java.util.Scanner;public class _84 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int N=sc.nextInt();do{int zz=0;int M=sc.nextInt();if(M<5){System.out.println(0);continue;}while(M>=5){M=M/5;zz=M+zz;}System.out.println(zz);N--;}while(N>0);sc.close();}}/*public class _84 {static int f(int M){if(M==5)return 1;if(M<5)return 0;int m=M/5;return f(m)+m;}public static void main(String[] args) {Scanner sc=new Scanner(System.in);int N=sc.nextInt();int zz;do{int M=sc.nextInt();zz=f(M);System.out.println(zz);N--;}while(N>0);sc.close();}}/* * http://acm.nyist.net/JudgeOnline/problem.php?pid=84阶乘的0时间限制:3000 ms  |  内存限制:65535 KB难度:3描述    计算n!的十进制表示最后有多少个0输入    第一行输入一个整数N表示测试数据的组数(1<=N<=100)    每组测试数据占一行,都只有一个整数M(0<=M<=10000000)输出    输出M的阶乘的十进制表示中最后0的个数    比如5!=120则最后的0的个数为1样例输入    6    3    60    100    1024    23456    8735373样例输出    0    14    24    253    5861    2183837 */

计算公式原理:点击打开链接

0 0