比赛 2022级数学专题练习赛3 评测结果 AAAAAAAAAA
题目名称 最优分解方案II 最终得分 100
用户昵称 HeSn 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2022-12-26 19:21:28
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n, x, cs[10010], cnt, mul[10000010], num; 
signed main() {
	freopen("maxmul.in", "r", stdin);
	freopen("maxmul.out", "w", stdout);
	cin >> n;
	x = n;
	for(int i = 2; i <= n; i ++) {
		if(x >= i) {
			x -= i;
			cs[++ cnt] = i;
		}
		else {
			break;
		}
	}
	for(int i = 1; i <= x; i ++) {
		cs[cnt - i + 1] ++;
	}
	num = 1;
	mul[1] = 1;
	for(int i = 1; i <= cnt; i ++) {
		cout << cs[i] << ' ';
		for(int j = 1; j <= num; j ++) {
			mul[j] *= cs[i];
		}
		for(int j = 1; j <= num; j ++) {
			mul[j + 1] += mul[j] / 10;
			mul[j] %= 10;
		}
		for(int j = num + 1; ; j ++) {
			if(mul[j]) {
				num = j;
				mul[j + 1] += mul[j] / 10;
				mul[j] %= 10;
			}
			else {
				break;
			}
		}
	}
	cout << endl;
	for(int i = num; i >= 1; i --) {
		cout << mul[i];
	}
    return 0;
}