C语言入门——求1到n阶乘之和(1≤n≤20)

一、问题

Problem Description

求1到n的阶乘之和

Input

输入一个正整数n (1 ≤ n ≤ 20)

Output

输出一个数,表示1到n的阶乘之和

Sample Input

10

Sample Output

4037913

二、分析

既然是求阶乘之和的,那么可以得到

核心突破点有:阶乘 求和

1️⃣阶乘部分

一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。

具体的大家可以看一下个人所写的这篇文章

C语言入门—求n的阶乘

2️⃣求和部分

借助循环进行实现,求和部分就是那前一项的阶乘加后一项阶乘,依次加直到循环结束。

关于这道题还需要注意的是数据范围,数据类型的范围如果过小会出现溢出的情况(题目中要求最大能实现到1到20的阶乘之和,因此需要选择合适的数据类型)。

int,long(long int),long long(long long int)的数据范围如下:

int -2147483648~2147483647
long -2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808

在了解了上述部分之后,就可以用代码实现了,如果你觉得自己可以实现了,那么可以先尝试以下,再看下面代码进行检查,

三、实现

#include <stdio.h>

int main()
{
	int n, i;
	long long fact = 1, sum = 0;
	scanf("%d", &n);
	//借助for循环实现阶乘求和
	for (i = 1; i <= n; i++) 
	{
		fact *= i;
		sum += fact;
	}
	printf("%lld\n", sum);
	return 0;
}

测试样例:10

10
4037913

--------------------------------
Process exited after 0.8705 seconds with return value 0
请按任意键继续. . .

关于1-20阶乘之和的问题先说的这里,希望这篇文章能对你有所帮助!


作者:code_流苏(CSDN)
喜欢的话,关注一下,点个赞吧!
欢迎评论交流,如有错误,还请指正!

更多推荐

C语言入门——求1到n阶乘之和(1≤n≤20)