求助,75分,最后一个点WA了。。。
查看原帖
求助,75分,最后一个点WA了。。。
664843
zhaozhijieleo楼主2022/4/3 00:43
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;

struct bigint {
	long long a[10000] = {0}, length = 0;

	bigint(int n) {
	        a[1]=n;
	}

	void read() {
		string s;
		int num = 1;
		cin >> s;
		length = s.length();

		for(int i = length - 1; i >= 0; i--, num++) a[num] = s[i] - '0';
	}

	void print() {

		for(int i = length; i >= 1; i--) printf("%d", a[i]);

		printf("\n");
	}

	void flatten() {
		for(int i = 1; i <= length; i++) if(a[i] >= 10) a[i + 1] += a[i] / 10, a[i] %= 10;

		if(a[length + 1]) length++;
	}
};

bigint operator+(bigint a, bigint b) {
	bigint c(0);
	c.length = max(a.length, b.length);

	for(int i = 1; i <= c.length; i++) c.a[i] = a.a[i] + b.a[i];

	c.flatten();
	return c;
}

bigint operator*(bigint a, int b) {

	for(int i = 1; i <= a.length; i++) a.a[i] *= b;

	a.flatten();

	return a;
}

signed main() {
	int n;
	bigint ans(0), sum(1);
	scanf("%d", &n);

	for(int i = 1; i <= n; i++) {
		sum = sum * i, ans = ans + sum;
		/*sum.print(),ans.print();
		printf("\n");*/
	}

	ans.print();
	return 0;
}

2022/4/3 00:43
加载中...