记录编号 |
549623 |
评测结果 |
AAAAA |
题目名称 |
[NOIP 2000PJ]计算器的改良 |
最终得分 |
100 |
用户昵称 |
夜莺 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.002 s |
提交时间 |
2020-02-19 10:22:11 |
内存使用 |
4.45 MiB |
显示代码纯文本
#include<cstdio>
#include<cstring>
using namespace std;
const int MAXN=10000;
char orange[MAXN],word;
int num[MAXN],ber=0;
bool pd[MAXN],back;
double ans_up,ans_down;
void Find(int t){
int cnt=1;
if(orange[t]=='-'){
cnt=-1;
t++;
if((orange[t]>='a'&&orange[t]<='z')||(orange[t]>='A'&&orange[t]<='Z'))
num[ber]=1;
}
while(orange[t]>='0'&&orange[t]<='9')
num[ber]=num[ber]*10+orange[t++]-'0';
if((orange[t]>='a'&&orange[t]<='z')||(orange[t]>='A'&&orange[t]<='Z')){
pd[ber]=true;
if(t==0||orange[t-1]=='='||orange[t-1]=='+')
num[ber]=1;
word=orange[t++];
}
if(pd[ber]==back)
num[ber]*=-1;
num[ber++]*=cnt;
if(orange[t]=='+'||orange[t]=='-'){
if(orange[t]=='+')t++;
Find(t);
}
if(orange[t]=='='){
back=true;
Find(t+1);
}
}
int main(){
freopen("computer.in","r",stdin);
freopen("computer.out","w",stdout);
scanf("%s",orange);
Find(0);
for(int i=0;i<ber;i++){
if(!pd[i])
ans_up+=num[i];
else ans_down+=num[i];
}
if(ans_up==0)
ans_down=1;
printf("%c=%.3f",word,ans_up/ans_down);
return 0;
}