问题好大
查看原帖
问题好大
637788
kimi0705楼主2023/9/15 16:28
#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) {
                cout << i << '-';
                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--;
                    }
                }
                cout << i << '\n';
            } else {
                Fu.push('&');
            }
        } else if (s[i] == '|') {
            jisuan();
            if (Num.top() == 1) {
                cout << i << '+';
                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--;
                    }
                }
                cout << i << '\n';
            } else {
                Fu.push('|');
            }
        } else if (s[i] == '(') {
            Fu.push('(');
        } else {
            jisuan();
            Fu.pop();
        }
    }
    cout << Num.top() << '\n';
    cout << x << ' ' << y << '\n';
    return 0;
}


#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);
			if (xx == 0) x++;
		} else {
			Num.push (xx | yy);
			if (xx == 1) y++;
		}
	}
}
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++;
				int cnt = 0;
				while (cnt || (s[i] != '|' && s[i] != ')') ) {
					if (s[i] == '(') cnt++;
					if (s[i] == ')') cnt--;
					i++;
				}
				i--;
			} else {
				Fu.push ('&');
			}
		} else if (s[i] == '|') {
			jisuan();
			//			if (Num.top() == 1) {
			//				y++;
			//				int cnt = 0;
			//				while (cnt || s[i] != ')') {
			//					if (s[i] == '(') cnt++;
			//					if (s[i] == ')') cnt--;
			//					i++;
			//					if (cnt == 0 && s[i] == '|') y++;
			//				}
			//				i--;
			//			}
			//			else {
			Fu.push ('|');
			//			}
		} else if (s[i] == '(') {
			Fu.push ('(');
		} else {
			jisuan();
			Fu.pop();
		}
	}
	cout << Num.top() << '\n';
	cout << x << ' ' << y << '\n';
	return 0;
}

/0&1/


#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);
			if (xx == 0) x++;
		} else {
			Num.push (xx | yy);
			if (xx == 1) y++;
		}
	}
}
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++;
				int cnt = 0;
				while (cnt || (s[i] != '|' && s[i] != ')') ) {
					if (s[i] == '(') cnt++;
					if (s[i] == ')') cnt--;
					i++;
				}
				i--;
			} else {
				Fu.push ('&');
			}
		} else if (s[i] == '|') {
			jisuan();
			//			if (Num.top() == 1) {
			//				y++;
			//				int cnt = 0;
			//				while (cnt || s[i] != ')') {
			//					if (s[i] == '(') cnt++;
			//					if (s[i] == ')') cnt--;
			//					i++;
			//					if (cnt == 0 && s[i] == '|') y++;
			//				}
			//				i--;
			//			}
			//			else {
			Fu.push ('|');
			//			}
		} else if (s[i] == '(') {
			Fu.push ('(');
		} else {
			jisuan();
			Fu.pop();
		}
	}
	cout << Num.top() << '\n';
	cout << x << ' ' << y << '\n';
	return 0;
}
/*0&1*/


2023/9/15 16:28
加载中...