记录编号 114642 评测结果 AAAAAAAAAA
题目名称 最优分解方案II 最终得分 100
用户昵称 Gravatarreturn 0; 是否通过 通过
代码语言 C++ 运行时间 0.029 s
提交时间 2014-07-31 20:16:32 内存使用 0.24 MiB
显示代码纯文本
#include<cstdio>
int a[450],b[450],c[450],temp1,temp2,sum[450]={1,1},n=0;
inline void csh();
int main()
{
	freopen("maxmul.in","r",stdin);
	freopen("maxmul.out","w",stdout);
	scanf("%d",&n);
	csh();
}
inline 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]);
}