java|P1009 [NOIP1998 普及组] 阶乘之和

题目描述
用高精度计算出 S = 1! + 2! + 3! +?+ n!S=1!+2!+3!+?+n!(n \le 50n≤50)。
其中“!”表示阶乘,例如:5!=5×4×3×2×1。
输入格式
一个正整数 nn。
输出格式
一个正整数 SS,表示计算结果。
输入输出样例
输入 #1复制
3
输出 #1复制
9
说明/提示
【数据范围】
【java|P1009 [NOIP1998 普及组] 阶乘之和】对于 100% 的数据,1≤n≤50。
注意:一般数据类型只能保存 n<=20 的数据和,所以这里我们用java的BigInteger类来进行计算,需要用到BigInteger类中的multiply方法和add方法!!!

import java.util.*; import java.math.*; public class Main{ public static void main(String[]args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); BigInteger bi[] = new BigInteger[n+1]; //为啥n+1,为了更好的理解和初始化。定义一个n+1BigInteger的类数组 BigInteger biSum = new BigInteger("0"); //用于求和的类实例 for(int i = 1; i <= n; i++){ bi[i] = new BigInteger(String.valueOf(i)); //初始化类数组。 } for(int i = 1; i <= n; i++){ BigInteger temp = new BigInteger("1"); //临时变量,用于接收1~n的每一位数的阶乘 for(int j = 1 ; j <=i; j++){ temp = temp.multiply(bi[j]); } biSum = biSum.add(temp); //用于求和保存1~n各个数阶乘的和 } System.out.println(biSum); } }

    推荐阅读