虚空终端 • 2个月前
注意一下符号处理有一个滞后的性质,即扫描到了符号截停数字后处理的是上一个符号,显然第一个符号之前的符号默认为加
#include<iostream>
#include<algorithm>
#include<cstring>
#include<stack>
using namespace std;
stack<int> s;
int main()
{
char c='+';
string str;
cin>>str;
int num=0;
for(auto i:str)
{
if(i=='+'||i=='*')
{
if(c=='+')
{
s.push(num);
num=0;
}
else
{
num=(num*s.top())%10000;
s.pop();
s.push(num);
num=0;
}
c=i;
}
else
{
num*=10;
num+=i-'0';
num%=10000;
}
}
if(c=='+')
{
s.push(num);
}
else if(c=='*')
{
num=(num*s.top())%10000;
s.pop();
s.push(num);
}
int ans=0;
while(!s.empty())
{
ans+=s.top();
ans%=10000;
s.pop();
}
cout<<ans%10000<<endl;
return 0;
}
评论:
请先登录,才能进行评论