40分求助!!!
查看原帖
40分求助!!!
1422078
LXR_LZY楼主2025/1/22 23:38
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const ll M=1e9;
bool flag=1;
int n,cnt=1;
string a[2050],s;
void f(ll x){
	stack<int> stk;
	while(!stk.empty()) stk.pop();
	stk.push(x);
	for(int i=1;i<=cnt;i++){
		if(a[i]=="NUM"){
			ll a;cin>>a;
			if(a>M){
				flag=0;
				break;
			}
			stk.push(a);
		}
		else if(a[i]=="POP"){
			if(stk.empty()){
				flag=0;
				break;
			}
			stk.pop();
		}
		else if(a[i]=="INV"){
			if(stk.empty()){
				flag=0;
				break;
			}ll a=stk.top();
			stk.pop();
			stk.push(-1*a);
		}
		else if(a[i]=="DUP"){
			if(stk.empty()){
				flag=0;
				break;
			}ll a=stk.top();
			stk.push(a);
		}
		else if(a[i]=="SWP"){
			if(stk.size()<2){
				flag=0;
				break;
			}ll a=stk.top();
			stk.pop();
			ll b=stk.top();
			stk.pop();
			stk.push(a);
			stk.push(b);
		}
		else if(a[i]=="ADD"){
			if(stk.size()<2){
				flag=0;
				break;
			}ll a=stk.top();
			stk.pop();
			ll b=stk.top();
			stk.pop();
			if(abs(a+b)>M){
				flag=0;
				break;
			}stk.push(a+b);
		}
		else if(a[i]=="SUB"){
			if(stk.size()<2){
				flag=0;
				break;
			}ll a=stk.top();
			stk.pop();
			ll b=stk.top();
			stk.pop();
			stk.push(b-a);
		}
		else if(a[i]=="MUL"){
			if(stk.size()<2){
				flag=0;
				break;
			}ll a=stk.top();
			stk.pop();
			ll b=stk.top();
			stk.pop();
			if(abs(a*b)>M){
				flag=0;
				break;
			}stk.push(a*b);
			
		}
		else if(a[i]=="DIV"){
			if(stk.size()<2){
				flag=0;
				break;
			}ll a=stk.top();
			stk.pop();
			ll b=stk.top();
			stk.pop();
			if(a==0){
				flag=0;
				break;
			}stk.push(b/a);
		}
		else if(a[i]=="MOD"){
			if(stk.size()<2){
				flag=0;
				break;
			}ll a=stk.top();
			stk.pop();
			ll b=stk.top();
			stk.pop();
            if(a==0){
				flag=0;
				break;
			}stk.push(b%a);
			
		}
		else if(a[i]=="END") break;
	}
	if(stk.size()!=1) flag=0;	
	if(!flag) cout<<"ERROR"<<endl; 
	else cout<<stk.top()<<endl;
}
int main(){
	while(cin>>s){
		a[cnt]=s;
		cnt++;
		if(s=="END") break;
	}
	cin>>n;
	while(n--){
		int x;
		cin>>x;
		f(x);
	}
	return 0;
}
2025/1/22 23:38
加载中...