记录编号 291442 评测结果 AAAAA
题目名称 [NOIP 2000PJ]计算器的改良 最终得分 100
用户昵称 Gravatar安呐一条小咸鱼。 是否通过 通过
代码语言 C++ 运行时间 0.001 s
提交时间 2016-08-07 16:21:48 内存使用 0.31 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,deng,t,k;
double a;
char c;
char ch[210];
bool judge[210];
//6a-5+1=2-2a
int main()
{
	freopen("computer.in","r",stdin);freopen("computer.out","w",stdout);
	scanf("%s",ch+1);
	n=strlen(ch+1);
	for(int i=1;i<=n;i++)
	{
		if(ch[i]=='=')deng=i;
		if(ch[i]>='a'&&ch[i]<='z')c=ch[i];
	}
	for(int i=1;i<=n;i++)
	{
		if(ch[i]==c&&i==1)
		{
			t++;
			continue;
		}
		if(ch[i]==c)
		{
			if(ch[i-1]=='-'||ch[i-1]=='+')
			{
				if(i<deng&&ch[i-1]=='-')
				{
					t--;
				}
				if(i<deng&&ch[i-1]=='+')
				{
					t++;
				}
				if(i>deng&&ch[i-1]=='+')
				{
					t--;
				}
				if(i>deng&&ch[i-1]=='-')
				{
					t++;
				}
				continue;
			}
			int q=ch[i-1]-'0';
			if(ch[i-1]>='0'&&ch[i-1]<='9')
			{
				k=1;
				while(ch[i-k]>='0'&&ch[i-k]<='9')
				{
					int yyy=ch[i-k]-'0';
					for(int i=1;i<k;i++)
					{
						yyy*=10;
					}
					//cout<<yyy<<"   yyy  "<<endl;
					if(k!=1)q+=yyy;
					k++;
				}
			}
			if(i<deng)
			{	
				
				if(i-k-1<1)
				{
					t+=q;
				}
				if(i-k-1>=1)
				{
					if(ch[i-k-1]=='+')
					{
						q*=-1;
					}
					else q*=1;		
					t+=q;
				}
			}
			if(i>deng)
			{
				if(i-k-1<deng)
				{
					t-=q;
				}
				if(i-k-1>=deng)
				{
					if(ch[i-k-1]=='+')
					{
						q*=1;
					}
					else q*=-1;
					t+=q;
					t=-t;
				}
			}
		}
	//	cout<<t<<" "<<i<<endl;
	}
	double qwq=0;
	k=1;
	int xxx=0;
	if(ch[1]>='1'&&ch[1]<='9')
	{
		xxx+=ch[1]-'0';
		while(ch[1+k]>='0'&&ch[1+k]<='9')
		{
			xxx*=10;
			xxx+=ch[k+1]-'0';
			judge[k+1]=1;	
			k++;
		}
	}
	if(ch[1+k]==c)xxx=0;
	for(int i=2;i<=n;i++)
	{
		if(ch[i]>='1'&&ch[i]<='9'&&!judge[i])
		{
			k=1;
			int quq=ch[i]-'0';
			while(ch[i+k]>='0'&&ch[i+k]<='9')
			{
				quq*=10;
				quq+=ch[i+k]-'0';
				judge[i+k]=1;
				k++;
			}
		//	cout<<qwq<<" "<<k<<" "<<i<<" "<<ch[i]<<endl;
			if(ch[i+k]==c)continue;
			if(i<deng)
			{	
				if(ch[i-1]=='-')
				{
					qwq-=quq;
				}else
				{
					qwq+=quq;
				}
			}
			if(i>deng)
			{
				if(ch[i-1]=='-')
				{
					qwq+=quq;
				}else
				{
					qwq-=quq;
				}
			}
		}
	}
	//cout<<qwq+xxx<<" "<<t<<endl; 
	qwq+=xxx;
	double a=-double(qwq/t);
	printf("%c=%.3lf",c,a);
}