#include <bits/stdc++.h>
using namespace std;
const int maxn = 100;
string s1 = "1", s2, s3 = "0";
string add (string x1, string y1) {
string sum;
int a1[maxn] = {0}, b1[maxn] = {0}, c1[maxn] = {0};
int l1 = x1.length(), l2 = y1.length();
for (int i = 0; i < l1; i++) a1[i] = x1[l1 - 1 - i] - '0';
for (int i = 0; i < l2; i++) b1[i] = y1[l2 - 1 - i] - '0';
for (int i = 0; i < maxn; i++) {
c1[i] += a1[i] + b1[i];
if (c1[i] >= 10) {
c1[i + 1] += c1[i] / 10;
c1[i] %= 10;
}
}
int mark = maxn - 1;
for (; mark >= 1; mark--) {
if (c1[mark] != 0) break;
}
for (; mark >= 0; mark--) {
string tmp = to_string(c1[mark]);
sum += tmp;
}
return sum;
}
string multiply (string x1, string y1) {
int a1[maxn] = {0}, b1[maxn] = {0}, c1[maxn] = {0};
string product;
char check1[100];
memset(check1, '0', sizeof(check1));
int l1 = x1.length(), l2 = y1.length();
for (int i = 0; i < l1; i++) a1[i] = x1[l1 - 1 - i] - '0';
for (int i = 0; i < l2; i++) b1[i] = y1[l2 - 1 - i] - '0';
for (int i = 0; i < maxn; i++) {
for (int j = 0; j <= i; j++) {
c1[i] += a1[j] * b1[i - j];
}
if (c1[i] >= 10) {
c1[i + 1] += c1[i] / 10;
c1[i] %= 10;
}
}
int mark = 100;
for (; mark >= 1; mark--) {
if (c1[mark] != 0) break;
}
for (int i = 0; mark >= 0; i++, mark--) {
string tmp = to_string(c1[mark]);
product += tmp;
}
return product;
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
s2 = to_string(j);
s1 = multiply(s1, s2);
}
s3 = add(s1, s3);
s1 = "1";
}
cout << s3;
return 0;
}
最后不能输出字符串吗。