You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
979 B
44 lines
979 B
#include <bits/stdc++.h>
|
|
|
|
using namespace std;
|
|
int n;
|
|
|
|
vector<int> add(vector<int> &A, vector<int> &B) {
|
|
if (A.size() < B.size()) return add(B, A);
|
|
vector<int> C;
|
|
int t = 0;
|
|
for (int i = 0; i < A.size(); i++) {
|
|
t += A[i];
|
|
if (i < B.size()) t += B[i];
|
|
C.push_back(t % 10);
|
|
t /= 10;
|
|
}
|
|
if (t) C.push_back(t);
|
|
return C;
|
|
}
|
|
|
|
vector<int> mul(vector<int> &A, int b) {
|
|
vector<int> C;
|
|
int t = 0;
|
|
for (int i = 0; i < A.size() || t; i++) {
|
|
if (i < A.size()) t += A[i] * b;
|
|
C.push_back(t % 10);
|
|
t /= 10;
|
|
}
|
|
while (C.size() > 1 && C.back() == 0) C.pop_back();
|
|
return C;
|
|
}
|
|
|
|
int main() {
|
|
cin >> n;
|
|
vector<int> A, S;
|
|
//初始化
|
|
A.push_back(1);
|
|
S.push_back(1);
|
|
for (int i = 2; i <= n; i++) {
|
|
A = mul(A, i);
|
|
S = add(A, S);
|
|
}
|
|
for (int i = S.size() - 1; i >= 0; i--)printf("%d", S[i]);
|
|
return 0;
|
|
} |