题目描述
用高精度计算出 S = 1! + 2! + 3! + ⋯ +n!(n≤50)。其中“!”表示阶乘,例如:5!=5×4×3×2×1。
输入格式
一个正整数 n。
输出格式
一个正整数 S,表示计算结果。
输入输出样例
输入
3
输出
9
说明/提示
【数据范围】
对于100% 的数据,1≤n≤50。
题解:
数据长度已经超过了long,所以我们这里用大数BigIntger计算高精度。
@命z 博客,BigInteger用法
import java.math.BigInteger;
import java.util.Scanner;
public class P1009NOIP1998普及组阶乘之和 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n=in.nextInt();
BigInteger one=new BigInteger("1");
BigInteger sum=new BigInteger("1");
for (int i=2;i<=n;i++) {
one=one.multiply(new BigInteger(String.valueOf(i)));
sum=sum.add(one);
}
System.out.println(sum);
}
}