萌新求助 40pts
查看原帖
萌新求助 40pts
882092
zMinYu楼主2023/3/3 17:27
#include<bits/stdc++.h>
using namespace std;
int n,cnt;
stack<long long> st;
long long num[200005];
string kmp[200005];
long long work(long long x)
{
	if(abs(x)>1000000000)
	{
		cout<<"ERROR\n";
		return 0;
	}
	cnt=0;
	while(!st.empty()) st.pop();
	st.push(x);
	long long tt,kk;
	for(int i=1;i<=n;i++)
	{
		if(kmp[i]=="END")
		{
			break;
		}
		else if(kmp[i]=="NUM")
		{
			if(abs(num[i])>1000000000)
			{
				cout<<"ERROR\n";
				return 0;
			}
			st.push(num[i]);
		}
		else if(kmp[i]=="POP")
		{
			if(st.empty())
			{
				cout<<"ERROR\n";
				return 0;
			}
			st.pop();
		}
		else if(kmp[i]=="INV")
		{
			if(st.empty())
			{
				cout<<"ERROR\n";
				return 0;
			}
			tt=st.top();
			tt=-tt;
			st.push(tt);
		}
		else if(kmp[i]=="DUP")
		{
			if(st.empty())
			{
				cout<<"ERROR\n";
				return 0;
			}
			st.push(st.top());
		}
		else if(kmp[i]=="SWP")
		{
			if(st.size()<2)
			{
				cout<<"ERROR\n";
				return 0;
			}
			tt=st.top();st.pop();
			kk=st.top();st.pop();
			st.push(tt);
			st.push(kk);
		}
		else if(kmp[i]=="ADD")
		{
			if(st.size()<2)
			{
				cout<<"ERROR\n";
				return 0;
			}
			tt=st.top();st.pop();
			kk=st.top();st.pop();
			if(abs(tt+kk)>1000000000)
			{
				cout<<"ERROR\n";
				return 0;
			}
			st.push(tt+kk);
		}
		else if(kmp[i]=="SUB")
		{
			if(st.size()<2)
			{
				cout<<"ERROR\n";
				return 0;
			}
			tt=st.top();st.pop();
			kk=st.top();st.pop();
			if(abs(kk-tt)>1000000000)
			{
				cout<<"ERROR\n";
				return 0;
			}
			st.push(kk-tt);
		}
		else if(kmp[i]=="MUL")
		{
			if(st.size()<2)
			{
				cout<<"ERROR\n";
				return 0;
			}
			tt=st.top();st.pop();
			kk=st.top();st.pop();
			st.push(kk*tt);
			if(abs(tt*kk)>1000000000)
			{
				cout<<"ERROR\n";
				return 0;
			}
		}
		else if(kmp[i]=="DIV")
		{
			if(st.size()<2)
			{
				cout<<"ERROR\n";
				return 0;
			}
			tt=st.top();st.pop();
			kk=st.top();st.pop();
			if(tt==0) 
			{
				cout<<"ERROR\n";
				return 0;
			}
			if(abs(kk/tt)>1000000000)
			{
				cout<<"ERROR\n";
				return 0;
			}
			st.push(kk/tt);
		}
		else if(kmp[i]=="MOD")
		{
			if(st.size()<2)
			{
				cout<<"ERROR\n";
				return 0;
			}
			tt=st.top();st.pop();
			kk=st.top();st.pop();
			if(abs(kk%tt)>1000000000)
			{
				cout<<"ERROR\n";
				return 0;
			}
			st.push(kk%tt);
		}
	} 
	if(st.size()!=1)
	{
		cout<<"ERROR\n";
		return 0;
	}
	cout<<st.top()<<"\n";
	return 0;
}
int main()
{
	long long ttt;
	while(cin>>kmp[++cnt]&&kmp[cnt]!="END")
	{
		if(kmp[cnt]=="NUM")
		{
			cin>>num[cnt];
		}
	}
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>ttt;
		work(ttt);
	}
	return 0;
} 

RE 1个,WA 2个

2023/3/3 17:27
加载中...