牛客算法周周练3 D
这道题用的是中缀表达式转后缀表达式的思想,但又比后者简单,因为‘表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号。’
所以可以直接模拟输入
有乘法就先计算出结果,结果再放入栈中,最后栈中元素求和
每个数只记录后4位,因为题目要求
#include<iostream>
#include<algorithm>
#include<cstring>
#include<stack>
#include<cmath>
using namespace std;
#define mid 1000000007
typedef long long ll;
stack<int> cl;
int sum = 0;
int main()
{
int i,a,b;
char ch;
//模拟输入,数字符号交错输入
for(int i=1;;i++)
{
if(i%2==1)
{
cin>>a;
a = a%10000;
cl.push(a);
}
else
{
ch=getchar();
if(ch=='
')
break;
else
{
if(ch=='*')
{
cin>>a;
a=a%10000;
b=cl.top();
cl.pop();
cl.push(a*b%10000);
i++;
}
}
}
}
while(!cl.empty())
{
sum=(sum+cl.top())%10000;
cl.pop();
}
cout<<sum<<endl;
return 0;
}