【题目描述】
用高精度计算出S=1!+2!+3!+…+n!(n≤50,其中“!”表示阶乘,例如:5!=5×4×3×2×1。
输入正整数n,输出计算结果S。
【输入】
一个正整数n。
【输出】
计算结果S。
【输入样例】
5
【输出样例】
153
#include<stdio.h> #include<string.h> #define INF 0x3f3f3f3f #define MAX(x,y) (x>y?x:y) #define MIN(x,y) (x>y?y:x) #define M 1000 int a[M],b[M]; int main() { int n; scanf("%d", &n); a[0] = 1, a[1] = 1; int i,j; int l; for (i = 1; i <= n; i++) { for (j = 1; j <= a[0]; j++) { a[j] *= i; } for (j = 1; j <= a[0]; j++) { a[j + 1] += a[j] / 10; a[j] %= 10; } if (a[j] > 0) { while (a[j] >= 10) { a[j + 1] += a[j] / 10; a[j] %= 10; j++; } a[0] = j; } for (l = 1; l <= a[0]; l++) { b[l] += a[l]; if (b[l] >= 10) { b[l + 1] += b[l] / 10; b[l] %= 10; } } } for (i = l-1; i >= 1; i--) { printf("%d", b[i]); } return 0; }
一本通 1173:阶乘和
最新推荐文章于 2023-03-07 19:36:21 发布