问题描述
试题 A: 阶乘求和【填空题】
本题总分:5 分
【问题描述】
令 S = 1! + 2! + 3! + … + 202320232023!,求 S 的末尾 9 位数字。 提示:答案首位不为 0。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
解题思路
思路:对于此问题要求获取结果的后九位数字,也就是说对于109取余,因为202320232023这个十二位的数字太大,对于从1的阶乘加到202320232023的阶乘显然不太现实,所以就要减少计算量,因为当一个整数乘以109后对其取余,那么结果都为0。所以我们只需要找到从第几个数的阶乘开始乘以了10^9即可,所以说从90开始,后面的数的阶乘就可以直接省略了。就把问题简化为了从1的阶乘加到90的阶乘,取其后9位数字。
代码实现
public class Main {
public static void main(String[] args) {
long sum=0,num;
for(int i=1;i<=90;i++){
num=1;
for(int j=1;j<=i;j++){
num*=j;
num%=1000000000;
}
sum+=num;
sum%=1000000000;
}
System.out.println(sum);
}
}