求助!
查看原帖
求助!
1242208
wyp20130701_是一个蒟蒻楼主2025/8/3 17:17
#include<iostream>
#include<algorithm>
#define MAXN 100
using namespace std;
struct Bigint{
	int len, a[MAXN];
	Bigint(int x = 0){
		for (int 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;
		}
		while (!a[len]) len--;
	}
	void print(){
		for (int i = max(1, len); i >= 1; i--) cout << a[i];
	}
};
Bigint operator+(Bigint a, Bigint b){
	Bigint c;
	int len = max(a.len, b.len);
	for (int i = 1; i <= len; i++){
		c[i] += a[i] + b[i];
	}
	c.flatten(len + 1);
	return c;
}
Bigint operator*(Bigint a, int b){
	Bigint c;
	for (int i = 1; i <= a.len; i++){
		c[i] = a[i] * b;
	}
	c.flatten(a.len + 11);
	return c;
}
int main(){
	Bigint ans(0), num(1);
	int n; cin >> n;
	for (int i = 1; i <= n; i++){
		num = num * i;
		ans = ans + num;
	}
	ans.print();
	return 0;
}

0分

2025/8/3 17:17
加载中...