令 S = 1! + 2! + 3! + ... + 202320232023!,求 S 的末尾 9 位数字。请给我一段在java程序中不会报错且效率高的代码
时间: 2023-10-01 08:04:38 浏览: 93
UART.h c语言编写
4星 · 用户满意度95%
以下是一段 Java 代码,可以计算出 S 的末尾 9 位数字:
```
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger sum = BigInteger.ZERO;
BigInteger mod = new BigInteger("1000000000");
for (int i = 1; i <= 202320232023L; i++) {
BigInteger factorial = BigInteger.valueOf(i);
for (int j = i - 1; j >= 1; j--) {
factorial = factorial.multiply(BigInteger.valueOf(j));
factorial = factorial.mod(mod);
}
sum = sum.add(factorial);
sum = sum.mod(mod);
}
System.out.println(sum.toString());
}
}
```
这段代码使用了 `java.math.BigInteger` 类来处理大数运算,避免了数值溢出的问题。在循环中,我们使用了两个 `for` 循环来计算每个阶乘,以及将它们加入总和中。由于每个阶乘的数字很大,我们在计算过程中对每个阶乘取模,以避免数值溢出。
最终,我们打印出 `sum` 的末尾 9 位数字,即为所求答案。
阅读全文