记录编号 206395 评测结果 AAAAA
题目名称 [NOIP 2000PJ]计算器的改良 最终得分 100
用户昵称 GravatarRiolu 是否通过 通过
代码语言 C++ 运行时间 0.012 s
提交时间 2015-11-06 22:00:13 内存使用 0.67 MiB
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
char s[99999];
int main()
{
	freopen("computer.in","r",stdin);
	freopen("computer.out","w",stdout);
	cin.getline(s,99998);
	int i,j;
	
	
	int len=strlen(s);
	for(i=0;i<len;i++)
		if(s[i]=='=') break;
	int d=i;   //找=号的位置
	//char ans[99999];
	
	i=0;
	while(s[i]=='-'||s[i]=='+'||s[i]=='='||  ('0'<=s[i]&&s[i]<='9'))
		i++;
	char a = s[i];
	//cout<<a;  找未知数
	//cout<<d;
	
	int l=0,r=0,book[99999]={0};
	for(i=0;i<d;i++)
	{
	    if(s[i]==a){
			int findn=i-1,temp=0,cheng=1;
			book[i]=1;
			while('0'<=s[findn] && s[findn]<='9' &&findn>=0) 
			{temp+=(s[findn]-48)*cheng; cheng*=10;book[findn]=1;findn--;}
			if(s[findn]=='-' && findn>=0) {book[findn]=1;l-=temp;}
			if(s[findn]=='+' && findn>=0) {l+=temp;book[findn]=1;}
			if(findn==-1) l+=temp;
			}
		}
	for(i=d+1;i<len;i++)
	{
	    if(s[i]==a){
			int findn=i-1,temp=0,cheng=1;book[i]=1;
			while('0'<=s[findn] && s[findn]<='9' && findn>=d) 
			{temp+=(s[findn]-48)*cheng; cheng*=10;book[findn]=1;findn--;}
			if(s[findn]=='-' && findn>=0) {book[findn]=1;l+=temp;}
			if(s[findn]=='+' && findn>=0) {l-=temp;book[findn]=1;}
			if(findn==d) l-=temp;
			}
		}
		//cout<<l;
	for(i=d;i>=0;i--)
	{
		int findn;
	    if('0'<=s[i] && s[i]<='9'&& book[i]==0){
			int temp=0,cheng=1;findn=i;
			while('0'<=s[findn] && s[findn]<='9' && findn>=0 ) 
			{temp+=(s[findn]-48)*cheng; cheng*=10;findn--;}
			if(s[findn]=='-' && findn>=0) r+=temp;
			if((s[findn]=='+' && findn>=0) || findn==-1) r-=temp;
			i=findn;
			}
		if(findn==-1) break;
		}
		
	for(i=len-1;i>d;i--)
	{
		int findn;
	    if('0'<=s[i] && s[i]<='9'&& book[i]==0){
			int temp=0,cheng=1;findn=i;
			while('0'<=s[findn] && s[findn]<='9' && findn>=d ) 
			{temp+=(s[findn]-48)*cheng; cheng*=10;findn--;}
			if(s[findn]=='-' && findn>=0) r-=temp;
			if((s[findn]=='+' && findn>=0) || findn==-1) r+=temp;
			i=findn;
			}
		if(findn==d) break;
		}
	//cout<<r;
		
	double ans=(double)(r)/(double)(l);
	cout<<a<<"=";
	printf("%.3lf",ans);
	}