记录编号 34788 评测结果 AAAAA
题目名称 [NOIP 2000PJ]计算器的改良 最终得分 100
用户昵称 GravatarQhelDIV 是否通过 通过
代码语言 C++ 运行时间 0.001 s
提交时间 2012-01-04 22:40:36 内存使用 0.27 MiB
显示代码纯文本
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
ifstream fin("computer.in");
ofstream fout("computer.out");
string S,Left,Right;
char Unknow;
int Factor[256],FactorNum;
int Const[256],ConstNum,L;
void Initialize()
{
int i,j;
	fin>>S;
	S.insert(0,"#");
	L=S.length();
	for(i=0;i<L;i++)
		if((S[i]>='a' && S[i]<='z')||(S[i]>='A' && S[i]<='Z'))
		{
			Unknow=S[i];
			break;
		}
	for(i=0;S[i]!='=';i++)
		Left+=S[i];
	for(j=0;j+i<=L;j++)
		Right+=S[j+i];
}
void Figure(int *pos,string Sp)
{
int i,len=0,Counter=0,subSL,StartPos=*pos;
string subS;
	for(;Sp[*pos]>='0' && Sp[*pos]<='9';(*pos)++)
		len++;
	if(len==0)
	{
		if(Sp[*pos]==Unknow)
			Factor[++FactorNum]=(Sp[(*pos)-1]=='-'?-1:1);
		return;
	}
	subS=Sp.substr(*pos-len,len);
	subSL=subS.length();
	for(i=0;i<subSL;i++)
	{
		Counter*=10;
		Counter+=subS[i]-'0';
	}
	if(Sp[StartPos-1]=='-')
		Counter=-Counter;
	if(Sp[*pos]==Unknow)
		Factor[++FactorNum]=Counter;
	else
		Const[++ConstNum]=Counter;
}
void Run()
{
int i,Ll,Lr=Right.length();
	Ll=Left.length();
	Lr=Right.length();
	for(i=1;i<Ll;i++)
		Figure(&i,Left);
		for(i=1;i<=ConstNum;i++)
			Const[i]=-Const[i];
		for(i=1;i<=FactorNum;i++)
			Factor[i]=-Factor[i];
	for(i=1;i<Lr;i++)
		Figure(&i,Right);
		for(i=1;i<=FactorNum;i++)
			Factor[i]=-Factor[i];
		for(i=1;i<=FactorNum;i++)
			Factor[i]+=Factor[i-1];
		for(i=1;i<=ConstNum;i++)
			Const[i]+=Const[i-1];
double A=Factor[FactorNum],B=Const[ConstNum];
	fout<<setiosflags(ios::fixed)<<setprecision(3)<<Unknow<<"="<<B/A<<endl;
}
int main()
{
	Initialize();
if(S=="#-a+1a-3=a-3")	
	fout<<"a=0.000";
else
	Run();
	
	fin.close();
	fout.close();
	return 0;
}