题目描述
令 S = 1! + 2! + 3! + ::: + 202320232023!,求S 的末尾 9 位数字。
提示:答案首位不为0。
本题的结果为一个整数,在提交答案时只输出这个整数,输出多余的内容将无法得分。
解题思路:
因为只取后九位,所以对于小于10^9的数可以直接相加,大于的对10^9取模即可,
但是阶乘的增长速度很快,所以达到一定次数后亿位上的数会变成零,此后后九位的数字将不会发生变化,对10^9取模等于零,退出循环即可
代码:
public class Main{ public static void main(String[] args) { long a = 1; long sum = 0; int tail = (int) Math.pow(10, 9); for (long i = 1; i <= 202320232023L; i++) { if (a==0) break; if (a > tail) a *= (i % 10); else a *= i; if (a > tail) a %= tail; sum += a; if (sum > tail) sum %= tail; } System.out.println(sum); } }