题目描述
用高精度计算出 S=1!+2!+3!+⋯+n!(n≤50)S=1!+2!+3!+⋯+n!(n≤50)。
其中“!”表示阶乘,例如:5!=5×4×3×2×15!=5×4×3×2×1。
输入描述
输入一个正整数 nn。
输出描述
输出一个正整数 SS,表示计算结果。
输入输出样例
示例 1
输入
3
输出
9
#include <iostream>
using namespace std;
int main() {
int i, A[1005] = {0}, B[1005] = {0}, n, j;
// 使用 cin 进行输入
cin >> n;
A[0] = B[0] = 1;
for (i = 2; i <= n; i++) {
// 计算当前数的阶乘
for (j = 0; j < 100; j++)
B[j] *= i;
// 处理进位
for (j = 0; j < 100; j++)
if (B[j] > 9) {
B[j + 1] += B[j] / 10;
B[j] %= 10;
}
// 累加阶乘结果
for (j = 0; j < 100; j++) {
A[j] += B[j];
if (A[j] > 9) {
A[j + 1] += A[j] / 10;
A[j] %= 10;
}
}
}
// 找到结果的最高位
for (i = 100; i >= 0 && A[i] == 0; i--);
// 使用 cout 进行输出
for (j = i; j >= 0; j--) cout << A[j];
cout << endl;
return 0;
}