求大佬
查看原帖
求大佬
694295
yuanbingtao楼主2022/5/31 17:38
#include <iostream>
#include <cstring>
#include <cmath>

using namespace std;

int m;

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

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

求大佬看看是什么问题,这是深入浅出上的

2022/5/31 17:38
加载中...