比赛 2022级数学专题练习赛3 评测结果 AAAAAAAAAA
题目名称 最优分解方案II 最终得分 100
用户昵称 op_组撒头屯 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2022-12-26 19:27:11
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=100+5;
int a[5*N],b[N*N];
int main(){
	freopen ("maxmul.in","r",stdin);
	freopen ("maxmul.out","w",stdout);
	int n,cnt=0;scanf("%d",&n);
	for (int i=2;;i++){
		if (n<i)break;
		a[++cnt]=i;
		n-=i;
	}
	while(n){
		for (int i=cnt;i>=1&&n;i--){
			a[i]++;n--;
		}
	}
	for (int i=1;i<=cnt;i++)printf("%d ",a[i]);
	printf("\n");
	b[1]=1;int num=1;
	for (int i=1;i<=cnt;i++){
		int jw=0;
		for (int j=1;j<=num;j++){
			b[j]=b[j]*a[i]+jw;
			jw=b[j]/10;
			b[j]%=10;
		}
		if (jw){
			while(jw){
				b[++num]=jw%10;
				jw/=10;
			}
		}
	}
	for (int i=num;i>=1;i--)printf("%d",b[i]);
	printf("\n");
	return 0;
}