比赛 |
CSP2022普及组 |
评测结果 |
EEEEEEEEEEEEEEEEEEEE |
题目名称 |
逻辑表达式 |
最终得分 |
0 |
用户昵称 |
荒之梦殇 |
运行时间 |
3.804 s |
代码语言 |
C++ |
内存使用 |
6.09 MiB |
提交时间 |
2022-10-29 16:20:50 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long tmp1,tmp2;//&=tmp1,|=tmp2;
string s;
char arr[100005],num=0;
stack<long> st1;
int val(char c){
if(c=='|') return 1;
else if(c=='&') return 2;
else if(c=='(') return 0;
}
int zhuan(string s){
stack<char> st;
for(int i=0;i<s.size();i++){
char n=s[i];
if(n=='1'||n=='0'){
arr[num]=n;
num++;
}
else if(st.empty()){
st.push(n);
}
else if(n=='('){
st.push(n);
}
else if(n==')'){
while(st.top()!='('){
char c=st.top();
arr[num]=c;
num++;
st.pop();
}
st.pop();
}
else{
while(!st.empty()&&val(n)<=val(st.top())){
char c=st.top();
arr[num]=c;
num++;
st.pop();
}
st.push(n);
}
}
while(!st.empty()){
char c=st.top();
arr[num]=c;
num++;
st.pop();
}
}
int main(){
freopen("csp2022pj_expr.in", "r", stdin);
freopen("csp2022pj_expr.out", "w", stdout);
cin>>s;
zhuan(s);
for(int i=0;i<num;i++){
char c=arr[i];
if(c=='0'||c=='1'){
st1.push(c-48);
}else{
if(c=='|'){
long long x=st1.top();st1.pop();
long long y=st1.top();st1.pop();
if(y==1) tmp1++;
if(x==1||y==1){
st1.push(1);
}
if(x==0&&y==0){
st1.push(0);
}
}
if(c=='&'){
long long x=st1.top();st1.pop();
long long y=st1.top();st1.pop();
if(x==1) tmp2++;
if(x==0||y==0){
st1.push(0);
}
if(x==1&&y==1){
st1.push(1);
}
}
}
}
cout<<st1.top()<<" "<<tmp1<<" "<<tmp2<<" ";
return 0;
}