[NOIP2013 普及组] 表达式求值

[NOIP2013 普及组] 表达式求值

题目描述

给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。

输入格式

一行,为需要你计算的表达式,表达式中只包含数字、加法运算符 “+” 和乘法运算符 “×”,且没有括号,所有参与运算的数字均为 02311 之间的整数。

输入数据保证这一行只有 $ 0-9+ \times 12 $种字符。

输出格式

一个整数,表示这个表达式的值。

注意:当答案长度多于 4 位时,请只输出最后 4 位,前导 0 不输出。

样例 #1

样例输入 #1

1+1*3+4

样例输出 #1

8

样例 #2

样例输入 #2

1+1234567890*1

样例输出 #2

7891

样例 #3

样例输入 #3

1+1000000003*1

样例输出 #3

4

提示

对于 30% 的数据,0 表达式中加法运算符和乘法运算符的总数 100

对于 80% 的数据,0 表达式中加法运算符和乘法运算符的总数 1000

对于 100% 的数据,0 表达式中加法运算符和乘法运算符的总数 100000

Code

#include <bits/stdc++.h>
using namespace std;
stack <int> x;
int main()
{
int a,b;
char c;
cin >> a;
int m=10000;
a=a%m;
x.push(a);
while(cin>>c>>b)
{
if(c=='*')
{
a=x.top();
x.pop();
x.push(a*b%m);
}
else x.push(b);
}
a=0;
while(x.size())
{
a+=x.top();
a%=m;
x.pop();
}
cout<<a<<endl;
return 0;
}
posted @   Momo·Trace  阅读(501)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起