求助,2,10AC,其余WA
查看原帖
求助,2,10AC,其余WA
727039
xiexie1234楼主2022/8/18 15:29
#include<cstdio>
#include<stack>
#include<string>
#include<iostream>
#include<cmath>

using namespace std;
stack<long long>kkksc03;
string s1[2005];
long long x[2005],a,b,c,j=0;

int main(){
	int n;
	while(1){
		j++;
		cin>>s1[j];
		if(s1[j]=="NUM"){
			scanf("%lld",&x[j]);
		}
		if(s1[j]=="END") break;
	}
	scanf("%d",&n);
	for(int i=1;i<=n;++i){
		scanf("%lld",&a);
		kkksc03.push(a);
		for(long long k=1;k<=j-1;++k){
			if(s1[k]=="NUM"){
				if(abs(x[k])>1000000000){
					printf("ERROR\n");
					while(!kkksc03.empty()) kkksc03.pop();
					break;
				}
				kkksc03.push(x[k]);
			}
			if(s1[k]=="POP"){
				if(kkksc03.empty()){
					printf("ERROR\n");
					break;
				}
				kkksc03.pop();
			}
			if(s1[k]=="INV"){
				if(kkksc03.empty()){
					printf("ERROR\n");
					break;
				}
				long long d=kkksc03.top();
				d=-d;
				kkksc03.push(d);
			}
			if(s1[k]=="DUP"){
				if(kkksc03.empty()){
					printf("ERROR\n");
					break;
				}
				long long d=kkksc03.top();
				kkksc03.push(d);
			}
			if(s1[k]=="SWP"){
				if(kkksc03.size()<2){
					printf("ERROR\n");
					while(!kkksc03.empty()) kkksc03.pop();
					break;
				}
				long long d=kkksc03.top(),e;
				kkksc03.pop();
				e=kkksc03.top();
				kkksc03.pop();
				kkksc03.push(d);
				kkksc03.push(e);
			}
			if(s1[k]=="ADD"){
				long long d=kkksc03.top(),e;
				if(kkksc03.size()<2){
					printf("ERROR\n");
					while(!kkksc03.empty()) kkksc03.pop();
					break;
				}
				kkksc03.pop();
				e=kkksc03.top();
				if(d+e>1000000000){
					printf("ERROR\n");
					while(!kkksc03.empty()) kkksc03.pop();
					break;
				}
				kkksc03.pop();
				kkksc03.push(d+e);
			}
			if(s1[k]=="SUB"){
				long long d=kkksc03.top(),e;
				if(kkksc03.size()<2){
					printf("ERROR\n");
					while(!kkksc03.empty()) kkksc03.pop();
					break;
				}
				kkksc03.pop();
				e=kkksc03.top();
				if(abs(e-d)>1000000000){
					printf("ERROR\n");
					while(!kkksc03.empty()) kkksc03.pop();
					break;
				}
				kkksc03.pop();
				kkksc03.push(e-d);
			}
			if(s1[k]=="MUL"){
				long long d=kkksc03.top(),e;
				if(kkksc03.size()<2){
					printf("ERROR\n");
					while(!kkksc03.empty()) kkksc03.pop();
					break;
				}
				if(d*e>1000000000){
					printf("ERROR\n");
					while(!kkksc03.empty()) kkksc03.pop();
					break;
				}
				kkksc03.pop();
				e=kkksc03.top();
				kkksc03.pop();
				kkksc03.push(d*e);
			}
			if(s1[k]=="DIV"){
				long long d=kkksc03.top(),e;
				if(kkksc03.size()<2){
					printf("ERROR\n");
					while(!kkksc03.empty()) kkksc03.pop();
					break;
				}
				kkksc03.pop();
				e=kkksc03.top();
				if(d==0||abs(e/d)>1000000000){
					printf("ERROR\n");
					while(!kkksc03.empty()) kkksc03.pop();
					break;
				}
				kkksc03.pop();
				kkksc03.push(e/d);
			}
			if(s1[k]=="MOD"){
				long long d=kkksc03.top(),e;
				if(kkksc03.size()<2){
					printf("ERROR\n");
					while(!kkksc03.empty()) kkksc03.pop();
					break;
				}
				if(d==0||abs(e%d)>1000000000){
					printf("ERROR\n");
					while(!kkksc03.empty()) kkksc03.pop();
					break;
				}
				kkksc03.pop();
				e=kkksc03.top();
				kkksc03.pop();
				kkksc03.push(e%d);
			}
			if(s1[k]=="END"){
				if(kkksc03.size()==1){
					printf("%lld\n",kkksc03.top());
					kkksc03.pop();
				}else{
					printf("ERROR\n");
				}
				while(!kkksc03.empty()) kkksc03.pop();
			}
		}
	}
	return 0;
}

一下午没做出来,哪位大佬能帮帮我。

2022/8/18 15:29
加载中...