题目描述
给定一个只包含 “加法” 和 “乘法” 的算术表达式,请你编程计算表达式的值。
输入格式
输入仅有一行,为需要计算的表达式,表达式中只包含数字、加法运算符 +
和乘法运算符 *
,且没有括号。
所有参与运算的数字不超过 10001000 个,且均为 10001000 以内的整数,并且保证最终计算结果不超过 int
范围。
输出格式
输出只有一行,包含一个整数,表示这个表达式的值。
样例 #1
样例输入 #1
1+1*3+4+5*2
样例输出 #1
18
样例输入 #2
111+222*2+333+50*2+100
样例输出 #2
1088
题目要求计算一个仅包含加法和乘法的算术表达式的值。输入为一行的表达式,包含数字、加号(+)和乘号(),且没有括号。所有数字为1000以内的整数,表达式长度不超过1000个字符,最终结果在int范围内。输出为表达式的计算结果。例如,输入“1+13+4+52”输出18,输入“111+2222+333+50*2+100”输出1088。解题时需注意运算符优先级,先计算乘法再计算加法。
#include<bits/stdc++.h>
using namespace std;
int main(){stack<int>stk;int x;int sum=0;char op;cin>>x;stk.push(x);while(cin>>op>>x){if(op=='+'){stk.push(x);}else if(op=='*'){x=stk.top()*x;stk.pop();stk.push(x);}}while(!stk.empty()){sum+=stk.top();stk.pop();}cout<<sum;return 0;
}