C刷题记录-1014
题目描述
求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。
输入
n
输出
Sn的值
样例输入
5
样例输出
153
1 #include <stdio.h> 2 3 unsigned long long int get_factorial (int n); 4 5 int main(){ 6 7 int n,i; 8 unsigned long long int SN = 0; 9 scanf("%d",&n); 10 11 for(i=1;i<=n;i++) 12 { 13 SN = SN + get_factorial(i); 14 } 15 printf("%lld",SN); 16 return 0; 17 } 18 19 /* 20 需要注意数据长度,如果n很小的时候,结果是正确的, 21 但是n=20的时候,超出int的范围,所以定义成unsigned long long int 22 */ 23 unsigned long long int get_factorial (int n) 24 { 25 unsigned long long int factorial; 26 if (n==1) 27 { 28 factorial = 1; 29 } 30 else if (n>=2) 31 { 32 factorial = (unsigned long long int)n * get_factorial(n-1); 33 } 34 35 return factorial; 36 }