#P1561. 表达式求值(NOIP2013)

表达式求值(NOIP2013)

题目描述

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

提示:因为只有 + 和 * 两种运算符,可以只用一个栈:读到 + 时把后面的数直接入栈;读到 * 时把"栈顶 × 后面的数"更新到栈顶。最后把栈中所有元素累加起来就是答案。

输入格式

一行,为需要你计算的表达式。表达式中只包含数字、加法运算符 + 和乘法运算符 *,且没有括号。

所有参与运算的数字为 00 到 231−12^{31}-1 之间的整数。表达式中加法运算符和乘法运算符的总数不超过 100000100000。

输出格式

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

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

样例

1+1*3+4
8
1+1234567890*1
7891
1+1000000003*1
4

说明/提示

输入数据保证这一行只有 0-9、+、* 这些字符。

由于数值上限较大,运算过程中即使使用 long long 也可能溢出,建议在每一步运算后都对 1000010000 取余。