比赛 |
CSP2022普及组 |
评测结果 |
AAAWWWAWWWWWWWAAAWWW |
题目名称 |
逻辑表达式 |
最终得分 |
35 |
用户昵称 |
崔宸铭 |
运行时间 |
0.339 s |
代码语言 |
C++ |
内存使用 |
3.14 MiB |
提交时间 |
2022-10-29 17:56:24 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
string str;
int len;
int x,y;
stack<int> num;
stack<char> op;
int f(){
int a=num.top();
num.pop();
int b=num.top();
num.pop();
char p=op.top();
op.pop();
if(b==1&&p=='|') y++;
if(b==0&&p=='&') x++;
if(p=='|'){
return a|b;
}else{
return a&b;
}
}
int main(){
freopen("csp2022pj_expr.in","r",stdin);
freopen("csp2022pj_expr.out","w",stdout);
cin>>str;
len=str.length();
for(int i=0;i<len;i++){
if(str[i]=='(') op.push('(');
else if(str[i]=='0') num.push(0);
else if(str[i]=='1') num.push(1);
else if(str[i]=='|'){
if(!op.empty()&&op.top()!='('){
int x=f();
num.push(x);
}
op.push('|');
}else if(str[i]=='&'){
if(!op.empty()&&op.top()=='&'){
int x=f();
num.push(x);
}
op.push('&');
}else{
while(op.top()!='('){
int x=f();
num.push(x);
}
op.pop();
}
}
while(!op.empty()){
int x=f();
num.push(x);
}
cout<<num.top()<<endl;
cout<<x<<" "<<y;
return 0;
}