求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。
1.因为这是阶乘求和,一般的int 类型可能就不够,因此我们利用long long int 类型(不用unsigned long 因为当n为20时,Sn =2561327494111820313)
了,unsigned long的范围不够。
2.求Sn的和,我·用的是两个for循环嵌套
for (int i = 1; i <= n; i++)
{
j = 1; //要在外面for循环执行完一次就初始化一次,要不就带入了内层for循环的值
for(int m = 0; m < i; m++)
j *= (m + 1); //求出第n个数的n的阶乘
Sn = Sn + j; //依次加上阶乘数
}
3还可以把我这两个for嵌套变为一个
for (int i = 1; i <= n; i++)
{
t *= i;
sum += t;
}
最终代码
#include <stdio.h>
int main(void)
{
int n;
long long Sn = 0, j=1;
scanf("%d", &n);
for(int i=1;i<=n;i++)
{
j=j*i;
Sn=Sn+j;
}
// for (int i = 1; i <= n; i++)
// {
// j = 1;
// for(int m = 0; m < i; m++)
// j *= (m + 1);
// Sn = Sn + j;
// }
printf("%lld", Sn); //long long的格式指定符为%lld
return 0;
}
标签:int,编程,求和,unsigned,long,1014,Sn,阶乘 From: https://www.cnblogs.com/su-1007/p/17291618.html