牛客算法周周练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=='\n')
			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; 
} 
 posted on 2020-04-24 10:08  My_serendipity  阅读(146)  评论(0编辑  收藏  举报