记录编号 |
451659 |
评测结果 |
AAAAA |
题目名称 |
[NOIP 2000PJ]计算器的改良 |
最终得分 |
100 |
用户昵称 |
Menamovic |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.000 s |
提交时间 |
2017-09-18 07:20:08 |
内存使用 |
0.00 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#define MENA MenaS
using namespace std;
string s;
string s1="",s2="";
int coe=0;//参数的系数,在等号左边
int sum=0;//常数的和,在等号右边
bool flag=true;
int tmp;
int len;
char a;
double ans;
int Main()
{
freopen("computer.in","r",stdin);
freopen("computer.out","w",stdout);
ios::sync_with_stdio(false);
cin>>s;
int l=0,r=s.size();
len=s.size();
while(s[l]!='=') s1+=s[l],l++;
while(s[r]!='=') s2=s[r]+s2,r--;
//系数和参数在等号左边,常数移到等号右边
for(int i=0;i<=l;i++)//等号左边
{
if(s[i]>='0' && s[i]<='9') tmp=tmp*10+s[i]-'0';
if(s[i]>='a' && s[i]<='z') a=s[i],coe+=(tmp==0?1:tmp)*(flag?(1):(-1)),tmp=0;
if(s[i]=='+' || s[i]=='-' || s[i]=='=')
{
if(s[i-1]>='0' && s[i-1]<='9') sum+=tmp*(flag?(-1):(1));
tmp=0;
if(s[i]=='-') flag=0;else flag=1;
}
}
tmp=0;
for(int i=l+1;i<len;i++)//等号右边
{
if(s[i]>='0' && s[i]<='9') tmp=tmp*10+s[i]-'0';
if(s[i]>='a' && s[i]<='z') a=s[i],coe+=(tmp==0?1:tmp)*(flag?(-1):(1)),tmp=0;
if(s[i]=='+' || s[i]=='-')
{
if(s[i-1]>='0' && s[i-1]<='9') sum+=tmp*(flag?(1):(-1));
tmp=0;
if(s[i]=='-') flag=0;else flag=1;
}
}
sum+=(flag?tmp:tmp*(-1));//不能忽略最后一个常数
ans=(double)sum/(double)coe;
if(ans==0) ans=0;//特判
printf("%c=%.3lf",a,ans);
return 0;
}
int main(){;}
int MENA=Main();