分析
首先,要做的是去掉结果中最后的0,参与阶乘计算的数的因式中含有2和5的在计算的过程中
会产生0,先计算出2和5出现的次数,而其余的因子不会造成影响。然后取这两个值的最小值
作为可以形成10的个数,在最后再把多除的那个数乘回来。且结果要求的是第一个非零的数,
因此在计算的过程中,可以对每一次计算都进行对10取余,就会得到结果。
import java.util.*;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int res = 1; int d1 = 0; int d2 = 0;
for(int i = 1; i<=n;i++){
int x = i;
while(x%2==0){
x /= 2;
d1++;
}
while(x%5==0){
x /= 5;
d2++;
}
res = res*x%10;
}
int k = Math.min(d1,d2);
for(int i = 0;i<d1-k;i++) res = res*2%10;
for(int i = 0;i<d2-k;i++) res = res*5%10;
System.out.println(res);
}
}