'commit'
This commit is contained in:
47
TangDou/LuoGuBook/第8章模拟与高精度/P1009_3.cpp
Normal file
47
TangDou/LuoGuBook/第8章模拟与高精度/P1009_3.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
vector<int> add(vector<int> A, vector<int> B) {
|
||||
if (A.size() < B.size()) swap(A, B);
|
||||
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;
|
||||
// 8899 * 2 = 17798
|
||||
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() {
|
||||
int n;
|
||||
cin >> n;
|
||||
vector<int> F, RES;
|
||||
//初始化
|
||||
RES.push_back(0);
|
||||
F.push_back(1);
|
||||
for (int i = 1; i <= n; i++) { //
|
||||
F = mul(F, i);
|
||||
RES = add(RES, F);
|
||||
}
|
||||
//倒序输出
|
||||
for (int i = RES.size() - 1; i >= 0; i--)
|
||||
printf("%d", RES[i]);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user