Help #2 #9 WA
查看原帖
Help #2 #9 WA
191248
Genshineer楼主2022/6/11 17:04
#include <bits/stdc++.h>
using namespace std;

stack<long long> s;

void Homo() {
	string x;
	getline(cin, x);
	for(long long i = 0; i < (long long)(x.size()); i++) {
		if(x[i] == 'R') {
			s.push(10000001);
		}
		else {
			if(x[i] == 'F') {
				s.push(10000002); 
			}
			else {
				if(x[i] == 'B') {
					s.push(10000003);
				}
				else {
					if(x[i] == '[' || x[i] == ']') {
						continue;
					}
					else {
						if(x[i] >= '0' && x[i] <= '9') {
							long long t = 0;
							while(x[i] >= '0' && x[i] <= '9' && i < (long long)(x.size())) {
								t = t * 10 + (long long)(x[i] - '0');
								i++;
							}
							s.push(t);
						}
					}
				}
			}
		}
	}
	s.push(0);
}

void homo() {
	long long a = -1, b = -1, t;
	while(!s.empty()) {
		if(s.size() == 1 && (s.top() <= 10000000 || s.top() >= 10000004)) {
			break;
		}
		long long st = s.top();
//		cout << "st=" << st << endl;
		s.pop();
		if((st > 10000000 && st < 10000004)) {
			switch (st) {
				case 10000001 : {
					t = a * b;
					s.push(t);
//					cout << "push*" << t << endl;
					break;
				}
				case 10000002 : {
					t = a + b;
					s.push(t);
//					cout << "push+" << t << endl;
					break;
				}
				case 10000003 : {
					t = a - b;
//					cout << a << " " << b << " " << a - b << endl;
					s.push(t);
//					cout << "push-" << t << endl;
					break;
				}
			}
			b = a = -1;
//			cout << "a=b=-1\n";
		}
		else {
			if(a == -1) {
				a = st;
//				cout << "a=" << st << endl;
			}
			else {
				b = st;
//				cout << "b=" << st << endl;
			}
		}
	}
	cout << abs(t);
}

int main() {
	Homo();
	homo();
	return 0;
}
2022/6/11 17:04
加载中...