展开 题目描述 用高精度计算出S=1!+2!+3!+…+n! (n≤50)
其中“!”表示阶乘,例如:5!=5×4×3×2×1。
输入格式 一个正整数N。
输出格式 一个正整数S,表示计算结果。
#include <iostream> #include <string> #include <algorithm> #include <queue> #include <cstring> using namespace std; int a[205], b[205]; int main() { int n; cin >> n; b[0] = a[0] = 1; for (int i = 2; i <= n; i++) { for (int j = 0; j <= 200; j++) { b[j] *= i; } for (int j = 0; j <= 200; j++) { if (b[j] >= 10) { b[j + 1] += b[j] / 10; b[j] %= 10; } } for (int j = 0; j <= 200; j++) { a[j] += b[j]; a[j + 1] += a[j] / 10; a[j] %= 10; } } int j = 200; while (!a[j] && j > 0) j--; for (; j >= 0; j--) { cout << a[j]; } }