90分,大佬带我
查看原帖
90分,大佬带我
814481
zxhiding楼主2022/11/8 20:28
#include<bits/stdc++.h>
using namespace std;
long long a, b = 1, c = 0;
int y[20001], m = 20000;
void nb(int x) {
	y[0] = 1;
	for (int i = 2; i <= x; i++) {
		for (int k = 0; k < 20001; k++)
			y[k] *= i;
		for (int k = 0; k < 20001; k++)
			if (y[k] > 9) {
				y[k + 1] += y[k] / 10;
				y[k] %= 10;
			}
	}
}
int main() {
	cin >> a;
	if (a == 3) {
		cout << 1 << " " << 2 << endl << 2;
		return 0;
	}if (a == 4) {
		cout << 1 << " " << 3 << endl << 3;
		return 0;
	}
	if (a > 4) {
		while (c < a) {
			b++;
			c += b;
		}
		if (c == a) {
			for (int i = 2; i <= b; i++)
				cout << i << " ";
			cout << endl;
			nb(b);
			for (m; m >= 0; m--)
				cout << y[m];
		}if (c - a == 1) {
			y[0] = 1;
			for (int i = 3; i <= b + 1; i++) {
				if (i == b) continue;
				cout << i << " ";
				for (int k = 0; k < 20001; k++)
					y[k] *= i;
				for (int k = 0; k < 20001; k++)
					if (y[k] > 9) {
						y[k + 1] += y[k] / 10;
						y[k] %= 10;
					}
			}cout << endl;
			for (m; m >= 0; m--)
				cout << y[m];
		}if (c > a + 1) {
			long long  p = c - a;
			y[0] = 1;
			for (int i = 2; i <= b; i++) {
				if (i == p) continue;
				cout << i << " ";
				for (int k = 0; k < 20001; k++)
					y[k] *= i;
				for (int k = 0; k < 20001; k++)
					if (y[k] > 9) {
						y[k + 1] += y[k] / 10;
						y[k] %= 10;
					}
			}cout << endl;
			while (y[m] == 0 && m > 0) m--;
			for (m; m >= 0; m--)
				cout << y[m];
		}
	}
	return 0;
}
2022/11/8 20:28
加载中...