记录编号 69565 评测结果 AAAAAAAAAA
题目名称 [金陵中学2007] 最优分解方案 最终得分 100
用户昵称 Gravatarraywzy 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2013-09-18 13:50:05 内存使用 0.32 MiB
显示代码纯文本
#include<fstream>
#include<string>
#include<cstring>
using namespace std;
ifstream fin("best.in");
ofstream fout("best.out");
int o[2000],n;
string HP(string A,string B)
{
	int a[2000],b[2000],c[2000];
	memset(c,0,sizeof(c));
	int LA,LB,LC,i,j;
	string C;
	LA=A.length();
	LB=B.length();
	for(i=LA-1;i>=0;i--)
		a[LA-i]=int(A[i]-48);
	for(i=LB-1;i>=0;i--)
		b[LB-i]=int(B[i]-48);
	for(i=1;i<=LA;i++)
		for(j=1;j<=LB;j++)
		{
			c[i+j-1]+=a[i]*b[j];
			c[i+j]+=c[i+j-1]/10;
			c[i+j-1]%=10;
		}
	LC=LA+LB;
	C="";
	while(c[LC]==0&&LC>1)
		LC--;
	for(i=LC;i>=1;i--)
		C+=char(c[i]+48);
	return C;
}
string bianhuan(int x)
{
	int i;
	int a;
	a=x;
	string A;
	string C;
	A="";
	C="";
	int LA;
	while(a>0)
	{
		A+=char(a%10+48);
	    a=a/10;
	}
	LA=A.length();
	for(i=LA-1;i>=0;i--)
	{
		C+=A[i];
	}
return C;
}
int main()
{
	fin>>n;
	string ANS;
	string K;
	int i;
	int flag=2;
	int yushu=0;
	int counter=1,temp;
	while(n>0)
	{
		if(flag<=n)
		{
			o[counter]=flag;
		    counter++;
		}
		if(n-flag<0)
		{yushu=n;}
		n-=flag;
		flag++;
	}
	temp=counter-1;
	while(yushu>0)
	{
		o[temp]++;
		temp--;
		yushu--;
		if(temp==0)
			temp=counter-1;
	}
	ANS=bianhuan(o[1]);
	for(i=2;i<=counter-1;i++)
	{
		K=bianhuan(o[i]);
		ANS=HP(ANS,K);
	}
	fout<<ANS<<endl;
	return 0;
}