玄关,全WA求助
查看原帖
玄关,全WA求助
1118893
Dark_Star楼主2024/1/1 18:45
#include<bits/stdc++.h>
#define endl '\n'
#define debug cout<<"debug"
using namespace std;
int f[10001],ans[10001],a[100001],b[5],Ans[100001];double dp[10001],w[10001];
void cheng(){
	int la=100000;
	while(a[la]==0&&la>1)la--;
	int lb=4;
	while(b[lb]==0&&lb>1)lb--;
	for(int i=1;i<=la;i++)
		for(int j=1;j<=lb;j++)
		{
			Ans[i+j-1]+=a[i]*b[j];
			Ans[i+j]+=Ans[i+j-1]/10;
			Ans[i+j-1]%=10;
		}
}
void zh(int x){
	int k=0;
	for(;x;x/=10)b[++k]=x%10;
}
void y(){
	int len=100000;
	while(Ans[len]==0&&len>1)len--;
	for(int i=1;i<=len;i++)a[i]=Ans[i];
	memset(Ans,0,sizeof(Ans));
}
int main(){
	int k=0,n;cin>>n;
	for(int i=2;i<=n;i++)w[i]=log(i);
	for(int i=2;i<=n;i++)
		for(int j=n;j>=i;j--)
			if(dp[j-i]+w[i]>dp[j])dp[j]=dp[j-i]+w[i],f[j]=j-i;
	for(int i=n;i;i=f[i])ans[++k]=i-f[i];
	for(int i=k;i>=1;i--)printf("%d ",ans[i]);putchar('\n');
	a[1]=1;
	for(int i=k;i>=1;i--)zh(ans[i]),cheng(),y();
	int len=100000;
	while(a[len]==0&&len>1)len--;
	for(int i=len;i>=1;i--)putchar(a[len]|48);
	return 0;
}
2024/1/1 18:45
加载中...