记录编号 |
34788 |
评测结果 |
AAAAA |
题目名称 |
[NOIP 2000PJ]计算器的改良 |
最终得分 |
100 |
用户昵称 |
QhelDIV |
是否通过 |
通过 |
代码语言 |
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;
}