70pts求条
查看原帖
70pts求条
637788
kimi0705楼主2023/10/16 10:38
#include <bits/stdc++.h>
using namespace std;
int x, y; // x & ; y |
stack<int> Num;
stack<char> Fu;
string s;
void jisuan() {
    while (Fu.top() != '(') {
        int yy = Num.top();
        Num.pop();
        int xx = Num.top();
        Num.pop();
        char c = Fu.top();
        Fu.pop();
        if (c == '&') {
            Num.push(xx & yy);
        } else {
            Num.push(xx | yy);
        }
    }
}
int main() {
    cin >> s;
    s = " (" + s + ")";
    for (int i = 1; i < s.size(); i++) {
        if (s[i] == '0') {
            Num.push(0);
        } else if (s[i] == '1') {
            Num.push(1);
        } else if (s[i] == '&') {
            if (Num.top() == 0) {
                x++;
                i++;
                if (s[i] == '1' || s[i] == '0')
                    ;
                else {
                    int cnt = 1;
                    while (cnt || s[i] != ')') {
                        i++;
                        if (s[i] == '(') cnt++;
                        if (s[i] == ')') cnt--;
                    }
                }
            } else {
                Fu.push('&');
            }
        } else if (s[i] == '|') {
            jisuan();
            if (Num.top() == 1) {
                y++;
                i++;
                if (s[i] == '1' || s[i] == '0')
                    ;
                else {
                    int cnt = 1;
                    while (cnt || s[i] != ')') {
                        i++;
                        if (s[i] == '(') cnt++;
                        if (s[i] == ')') cnt--;
                    }
                }
            } else {
                Fu.push('|');
            }
        } else if (s[i] == '(') {
            Fu.push('(');
        } else {
            jisuan();
            Fu.pop();
        }
    }
    cout << Num.top() << '\n';
    cout << x << ' ' << y << '\n';
    return 0;
}
2023/10/16 10:38
加载中...