小号关QaQ
查看原帖
小号关QaQ
1058749
King_and_Grey楼主2024/8/10 16:56
#include <bits/stdc++.h>
using namespace std;
const int maxn = 500;
struct Bigint {
	int len, a[maxn];
	Bigint(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; i--)
			printf("%d", a[i]);
		cout << endl;
	}
};
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 n;
Bigint ans(1);
int a[maxn];
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin >> n;
	for(int i = 1;i <= n;i++){
		cin >> a[i];
		if(a[i] == 0){
			cout << 1 << endl;
			continue;
		}
		Bigint ans(1);
		for(int j = 1;j <= a[i];j++){
			ans = ans * j;
		}
		ans.print();
	}
	return 0;
}

求调

2024/8/10 16:56
加载中...