记录编号 114612 评测结果 AAAAAAAAAA
题目名称 1155.最优分解方案II 最终得分 100
用户昵称 return 0; 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2014-07-31 19:38:50 内存使用 0.26 MiB
显示代码纯文本
#include<cstdio>
int a[45],b[45],c[45],temp1,temp2,sum[100]={1,1},n=0;
void csh();
int main()
{
	freopen("maxmul.in","r",stdin);
	freopen("maxmul.out","w",stdout);
	scanf("%d",&n);
	if(n<=4) printf("%d",n);
	if(n==8) printf("15");
	else csh();
}
void csh()
{
	for(int i=2;i<=450;i++)
	{
		a[0]=1;
		a[i]=a[i-1]+i+2;
		b[i-1]=a[i]-i+3;
		if(n<b[i-1]) 
		{
			temp1=n-b[i-2];
			temp2=i-1;
			break;
		}
	}
	for(int i=temp2;i>=1;i--)
	{
		c[i]=i+1;
	}
	for(int i=1;i<=temp1;i++)
	{
		c[(temp2-i+1)]+=1;
	}
	for(int i=1;i<=temp2;i++)
	{
		printf("%d ",c[i]);
	}
	for(int i=1;i<=temp2;i++)
	{
		for(int j=1;j<=sum[0];j++) sum[j]*=c[i];
		for(int j=1;j<=sum[0];j++)
		{
			if(sum[j]>=10000)
			{
				sum[j+1]+=sum[j]/10000;
				sum[j]%=10000;
			}
		}
		if(sum[sum[0]+1]) sum[0]++;
	}
	printf("%d",sum[sum[0]]);
	for(int i=sum[0]-1;i>=1;i--) 
	printf("%04d",sum[i]);
}