记录编号 |
384868 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2013PJ]表达式求值 |
最终得分 |
100 |
用户昵称 |
swttc |
是否通过 |
通过 |
代码语言 |
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;
}