自己写的高精度算法,全WA。(甚至写了class,QwQ
#include <bits/stdc++.h>
using namespace std;
namespace ggdb781
{
class BigInt
{
private:
int num2[100010];
public:
BigInt() {
num2[0] = 1;
}
BigInt(int num) {
int lenn = 0;
while (num) {
num2[++lenn] = num % 10;
num /= 10;
}
num2[0] = lenn;
}
~BigInt() {
memset(num2, 0, sizeof(num2));
}
friend ostream& operator<<(ostream& out, BigInt num);
BigInt operator+(BigInt rhs) {
BigInt res(0);
res.num2[0] = max(num2[0], rhs.num2[0]);
int x = 0;
for (int i = 1; i <= res.num2[0]; ++i) {
res.num2[i] = num2[i] + rhs.num2[i] + x;
x = res.num2[i] / 10;
res.num2[i] %= 10;
}
if (x > 0) {
res.num2[++res.num2[0]] = x;
}
while (res.num2[0] > 1 && res.num2[res.num2[0]] == 0) {
--res.num2[0];
}
return res;
}
BigInt operator*(int rhs) {
BigInt res(0);
int x = 0;
res.num2[0] = num2[0];
for (int i = 1; i <= res.num2[0]; ++i) {
res.num2[i] = num2[i] * rhs + x;
x = res.num2[i] / 10;
res.num2[i] %= 10;
}
if (x > 0) {
res.num2[++res.num2[0]] = x;
}
while (res.num2[0] > 1 && res.num2[res.num2[0]] == 0) {
--res.num2[0];
}
return res;
}
};
ostream& operator<<(ostream& out, BigInt num) {
for (int i = num.num2[0]; i >= 1; --i) {
out << num.num2[i];
}
return out;
}
}
using namespace ggdb781;
int main()
{
int num;
cin >> num;
BigInt ans(0);
for (int i = 1; i <= num; i++) {
BigInt tmp(1);
for (int j = 1; j <= i; j++) {
tmp = tmp * j;
}
ans = ans + tmp;
}
cout << ans << endl;
return 0;
}