c++萌新求助
查看原帖
c++萌新求助
169606
Jason12楼主2022/2/20 14:58

样例的第三个点输出“ERROR”

我的代码:

#include <bits/stdc++.h>
  using namespace std;
string s;
long long n,a[2005],b[2005],w,u,v,t,r,i,c[2005];
int main()
{
	while (true)
	{
		cin>>s;
		if (s=="END") break;
		if (s=="NUM")
		{
			scanf("%d",&w);
			if (w>1000000000) b[0]=-5;
			c[++t]=w;
			b[++r]=-3;
		}
		else if (s=="POP") b[++t]=-2;
		else if (s=="INV") b[++t]=-1;
		else if (s=="DUP") b[++t]=1;
		else if (s=="SWP") b[++t]=0;
		else if (s=="ADD") b[++t]=2;
		else if (s=="SUB") b[++t]=3;
		else if (s=="MUL") b[++t]=4;
		else if (s=="DIV") b[++t]=5;
		else if (s=="MOD") b[++t]=6;
		else b[0]=-5;
	}
	scanf("%d",&n);
	while (n--)
	{
		scanf("%d",&w);
		a[1]=w;
		u=1;
		v=0;
		if (b[0]==-5)
		{
			printf("ERROR\n");
			continue;
		}
		cout<<endl;
		for (i=1;i<=t;i++)
		{
			switch (b[i])
			{
				case -3:a[++u]=c[++v];break;
				case -2:u--;break;
				case -1:a[u]*=-1;break;
				case 1:a[++u]=a[u-1];break;
				case 0:swap(a[u],a[u-1]);break; 
				case 2:a[--u]+=a[u+1];break;
				case 3:a[--u]-=a[u+1];break;
				case 4:a[--u]*=a[u+1];break;
				case 5:a[--u]/=a[u+1];break;
				case 6:a[--u]%=a[u+1];break;
			}
			if (a[u]>1000000000) a[0]=-5;
		}
		if (u!=1 || a[0]==-5) printf("ERROR\n");
		else printf("%d\n",a[1]);
		cout<<endl;
	}
	return 0;
}
2022/2/20 14:58
加载中...