记录编号 384868 评测结果 AAAAAAAAAA
题目名称 [NOIP 2013PJ]表达式求值 最终得分 100
用户昵称 Gravatarswttc 是否通过 通过
代码语言 C++ 运行时间 0.061 s
提交时间 2017-03-19 18:32:22 内存使用 0.31 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<stack>
#include<string>
using namespace std;
stack<int>s1;
stack<int>s2;
string c;
int num=0;
int t=1;
int ans=0;
int main()
{
	freopen("expr2013.in","r",stdin);
	freopen("expr2013.out","w",stdout);
	cin>>c;
	for(int i=0;i<c.size();i++)
	{
		if(isdigit(c[i]))
		{
			num*=10;
			num+=c[i]-'0';
		}
		else
		{
			s1.push(num);
			num=0;
			if(c[i]=='*')
			{
				s2.push(s1.top());
				s1.pop();
			}
			else if(c[i]=='+')
			{
				t=1;
				while(!s2.empty())
				{
					t=t*s2.top()%10000;
					s2.pop();
				}
				t=t*s1.top()%10000;
				s1.pop();
				s1.push(t);
				t=1;
			}
		}
	}
	if(s2.empty())
	{
		s1.push(num);
	}
	else if(!s2.empty())
	{
		t=1;
		while(!s2.empty())
		{
			t=t*s2.top()%10000;
			s2.pop();
		}
		t=t*num%10000;
		s1.push(t);
	}
	while(!s1.empty())
	{
		
		ans=ans+s1.top()%10000;
		s1.pop();
	}
	printf("%d",ans%10000);
	return 0;
}