public class Main { //5000的阶乘,连long也顶不住 //求阶乘的最后一位非0数,“只要每次保留最后两个非零数去*下一个数,就行”。这个规律,可以先写一个计算阶乘的,去观察规律。规律是不需要解释的。硬要说的话,你想看脚趾,就和头发无关,关注点可以帮助你快,还剩空间 //所以用到了取余 public static int find(int num) { int lst_val=1; for(int i=1;i<=num;i++) { int tmp=lst_val*i; if(tmp%10==0) while(tmp%10 == 0) tmp=tmp/10; lst_val=tmp%10;//保留最后两个非0数。连long整型都不用 tmp/=10; lst_val=lst_val+tmp%10*10; } return lst_val%10; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNextInt()) { int num = sc.nextInt(); int res = find(num); System.out.println(res); } } }