求助
查看原帖
求助
995934
fkxr楼主2024/6/17 11:51
#include <bits/stdc++.h>
using namespace std;
#define maxn 100

struct Bigint {
	int len, a[maxn];
	Bigint(int x = 0) {
		memset(a, 0, sizeof(a));
		for (len = 0; x; len++) {
			a[len] = x % 10, x /= 10;
		}
	}
	int &operator[](int i) {
		return a[i];
	}
	void flatten(int L) {
		len = L;
		for (int i = 0; i < len; i++) {
			a[i + 1] += a[i] / 10, a[i] %= 10;
		}
		for (; !a[len];) {
			len--;
		}
	}
	void print() {
		for (int i = max(len - 1, 0); i >= 0; i--) {
			cout << a[i];
		}
	}
};

Bigint operator+(Bigint a, Bigint b) {
	Bigint c;
	int len = max(a.len, b.len);
	for (int i = 0; i < len; i++) {
		c[i] += a[i] + b[i];
	}
	c.flatten(len + 1);
	return c;
}

Bigint operator*(Bigint a, int b) {
	Bigint c;
	int len = a.len;
	for (int i = 1; i <= len; i++) {
		c[i] = a[i] * b;
	}
	c.flatten(len + 11);
	return c;
}

int main() {
	Bigint ans(0), fac(1);
	int m;
	cin >> m;
	for (int i = 1; i <= m; i++) {
		fac = fac * i;
		ans = ans + fac;
	}
	ans.print();
	return 0;
}

照着深入浅出抄的,只输出0

2024/6/17 11:51
加载中...