NOI的1.5.34求阶乘的和

描述
给定正整数n,求不大于n的正整数的阶乘的和(即求1!+2!+3!+…+n!)

输入
输入有一行,包含一个正整数n(1 < n < 12)。
输出
输出有一行:阶乘的和。
样例输入
5
样例输出
153

解法一:(利用for循环)

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
	Scanner in=new Scanner(System.in);
	int n=in.nextInt();
	int sum=0;//阶乘的和;
	int a=1;//a=n!,数的阶乘值
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=i;j++) {
			a=a*j;
		}
		sum=sum+a;
		a=1;//由于下一个阶乘数值也是从a=1开始的
	}
	System.out.println(sum);
     }
}

解法二:(利用BigInteger)用于n!值很大的情况

import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
	Scanner in=new Scanner(System.in);
	int n=in.nextInt();
	BigInteger a=new BigInteger("1");
	BigInteger c=new BigInteger("0");
	for(int i=1;i<=n;i++) {
	for(int j=1;j<=i;j++){//求n!
		String b=String.valueOf(j);
		a=a.multiply(new BigInteger(b));//multiply是BigInteger用于乘法;
		}
	c=c.add(a);//add是BigInteger用于加法
	a=new BigInteger("1");//将a的值重新定义为1(由于阶乘都是从1开始)
	}
	System.out.println(c);
     }
}
发布了15 篇原创文章 · 获赞 16 · 访问量 359

猜你喜欢

转载自blog.csdn.net/weixin_45455503/article/details/104201849
今日推荐