本文主要是介绍第十四届蓝桥杯JavaB组省赛真题 - 阶乘求和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/ 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);}
}
这篇关于第十四届蓝桥杯JavaB组省赛真题 - 阶乘求和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!