
不要被题目的2023吓到,做这道题可以先观察一下前几个阶乘的值,这里我们看看前20个:
1
2
6
24
120
720
5040
40320
362880
3628800
39916800
479001600
6227020800
87178291200
1307674368000
20922789888000
355687428096000
6402373705728000
121645100408832000
2432902008176640000
我们不难发现越到后面的数的阶乘,结尾的0就越多,而且每5个数后面的0会多一位,所以我们计算前45个就行(后来发现前40个就行,因为25贡献了两个因子 5),题目只需要求后9位,所以前面的不用管。
java
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
long sum=0;
for (int i=1;i<45;i++){
sum+=jiecheng(i);
}
sum=sum%1000000000L;
System.out.println(sum);
}
public static long jiecheng(long num){
long sum=1;
for (long i=num;i>1;i--){
sum*=i;
sum=sum%1000000000L;
}
return sum;
}
}