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