0
已解决
黄依成
中级天翼
中级天翼
1986 栈函数
这题是谁出的?这么毒瘤?
有人做出来吗?
↓WA20分代码
#include<iostream>
#include<queue>
#include<cmath>
using namespace std;
string t,s[2005],tssz;
int num,n,m;
bool flag;
long long a[1000005];
queue<long long> q;
int sz(string s){
int t=0;
for(int i=0;i<s.size();i++) t=t*10+s[i]-'0';
return t;
}
bool check(long long x){
if(abs(0-x)>1000000000) return false;
return true;
}
void INV(){
long long t=q.front();
if(!check(t)){cout<<"ERROR!"<<endl;flag=true;return ;}
cout<<t<<endl;
q.pop();
q.push(0-t);
}
void SWP(){
long long x=q.front();q.pop();
long long y=q.front();q.pop();
if(!check(x)||!check(y)){cout<<"ERROR!"<<endl;flag=true;return ;}
q.push(y),q.push(x);
}
void ADD(){
long long x=q.front();q.pop();
long long y=q.front();q.pop();
if(!check(x+y)){cout<<"ERROR!"<<endl;flag=true;return ;}
cout<<x+y<<endl;
q.push(x+y);
}
void SUB(){
long long x=q.front();q.pop();
long long y=q.front();q.pop();
if(!check(y-x)){cout<<"ERROR!"<<endl;flag=true;return ;}
cout<<y-x<<endl;
q.push(y-x);
}
void MUL(){
long long x=q.front();q.pop();
long long y=q.front();q.pop();
long long t=x*y;
if(!check(t)){cout<<"ERROR!"<<endl;flag=true;q.push(x),q.push(y);return ;}
cout<<t<<endl;
q.push(t);
}
void DIV(){
long long x=q.front();q.pop();
long long y=q.front();q.pop();
if(!check(y/x)){cout<<"ERROR!"<<endl;flag=true;return ;}
cout<<y/x<<endl;
q.push(y/x);
}
void MOD(){
long long x=q.front();q.pop();
long long y=q.front();q.pop();
if(!check(y%x)){cout<<"ERROR!"<<endl;flag=true;return ;}
cout<<y%x<<endl;
q.push(y%x);
}
int main(){
while(cin>>t){
if(!(t[0]>='A'&&t[0]<='Z')){tssz=t;break;}
if(t=="NUM"){cin>>num;q.push(num);}
s[++n]=t;
}
m=sz(tssz);
for(int i=1;i<=m;i++){cin>>a[i];q.push(a[i]);}
for(int i=1;i<=n;i++){
if(s[i]=="NUM") continue;
if(s[i]=="POP") q.pop();
if(s[i]=="INV") INV();
if(s[i]=="DUP") q.push(q.front());
if(s[i]=="SWP") SWP();
if(s[i]=="ADD") ADD();
if(s[i]=="SUB") SUB();
if(s[i]=="MUL") MUL();
if(s[i]=="DIV") DIV();
if(s[i]=="MOD") MOD();
if(s[i]=="END"){
if(q.size()!=1||flag) cout<<"ERROR!"<<endl;
}
}
ADD();
return 0;
}
好的我人已经成功写傻了/yun
有没有好心人看一看
0
0
汪宇航
新手启示者
新手启示者
注意:
数据范围及提示 Data Size & Hint
【提示】
仔细考虑不合法的情况,避免不必要的Runtime Error和Wrong Anwser。
【数据规模】
函数操作步数<=2000
询问数<=2000
0
汪宇航
新手启示者
新手启示者
0
0
0
0
0