/ 10^9考虑前九位,% 10^9保留后9位
解题思路:
求获取结果的后九位数字,需要对10^9取余,因为202320232023这个数字的阶乘太大,必须要减少计算量,因为当一个整数乘以10^9后对其取余,那么结果都为0。
所以我们只需要找到从第几个数的阶乘开始乘以了10^9即可,所以说从100开始(实际上最少可以从40左右开始,40及其之后的数字都可以,但我们不可能一下子的精确的通过估算找到40这个数,所以可以取大一些,不过是时间长了点,结果是没问题的),后面的数的阶乘就可以直接省略了。就把问题简化为了从1的阶乘加到100的阶乘,取其后9位数字。
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
long sum = 0, num;
int mod = (int) Math.pow(10, 9);
for (int i = 1; i <= 100; i++) {
num = 1;
for (int j = 1; j <= i; j++) {
num *= j;
num %= mod;
}
sum += num;
sum %= mod;
}
System.out.println(sum);
}
}