#pragma GCC optimize(3)
#include <iostream>
#include <string>
#include <vector>
using namespace std;
typedef long long ll;
using namespace std;
vector<int> a(1000000), c(1000000);
void mult(vector<int> & a, int b, int &lena) {
int t = 0;
for (int i = 0; i < lena; i++) {
int tp = t;
t += a[i] * b;
// printf("i:%d, %d + %d * %d = %d\n", i, tp, a[i], b, t);
c[i] = t % 10;
t /= 10;
}
while (t) {
c[lena++] = t % 10;
t /= 10;
}
// while (c.size() > 1 && c.back() == 0) c.pop_back();
a.swap(c);
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n;
cin >> n;
a[0] = 1;
int lena = 1;
for (int i = 1; i <= n; i++) {
mult(a, i, lena);
}
cout << n << "!=";
for (int i = lena - 1; i >= 0; i--) {
cout << a[i];
}
return 0;
}
感谢陈大佬给我改的思路, o3优化加各种优化, 牛逼