提交时间:2026-01-04 15:45:32
运行 ID: 81307
#include <iostream> #include <vector> #include <algorithm> using namespace std; vector<int> multiply(const vector<int>& a, int b) { vector<int> result; int carry = 0; for (int i = 0; i < a.size() || carry; ++i) { int sum = carry + (i < a.size() ? a[i] : 0) * b; result.push_back(sum % 10); carry = sum / 10; } while (result.size() > 1 && result.back() == 0) result.pop_back(); return result; } vector<int> add(const vector<int>& a, const vector<int>& b) { vector<int> result; int carry = 0; for (int i = 0; i < a.size() || i < b.size() || carry; ++i) { int sum = carry + (i < a.size() ? a[i] : 0) + (i < b.size() ? b[i] : 0); result.push_back(sum % 10); carry = sum / 10; } return result; } int main() { int N; cin >> N; vector<int> sum = {0}; vector<int> factorial = {1}; for (int i = 1; i <= N; ++i) { factorial = multiply(factorial, i); sum = add(sum, factorial); } for (int i = sum.size() - 1; i >= 0; --i) { cout << sum[i]; } cout << endl; return 0; }