fork download
  1. #include <iostream>
  2. #include <stack>
  3. #include <string>
  4. using namespace std;
  5.  
  6. int main() {
  7. int t;
  8. cin >> t;
  9.  
  10. while (t--) {
  11. int n;
  12. cin >> n;
  13. cin.ignore();
  14. string expr;
  15. cin >> expr;
  16.  
  17. stack<long long> st;
  18. bool valid = true;
  19.  
  20. for (int i = expr.size() - 1; i >= 0; --i) {
  21. char c = expr[i];
  22. if (c >= '0' && c <= '9') {
  23. st.push(c - '0'); // convert char to number
  24. } else if (c == '+' || c == '-' || c == '*' || c == '/') {
  25. if (st.size() < 2) {
  26. valid = false;
  27. break;
  28. }
  29. long long a = st.top(); st.pop();
  30. long long b = st.top(); st.pop();
  31. if (c == '+') st.push(a + b);
  32. else if (c == '-') st.push(a - b);
  33. else if (c == '*') st.push(a * b);
  34. else if (c == '/') {
  35. if (b == 0) {
  36. valid = false;
  37. break;
  38. }
  39. st.push(a / b);
  40. }
  41. } else {
  42. valid = false;
  43. break;
  44. }
  45. }
  46.  
  47. if (valid && st.size() == 1) {
  48. cout << st.top() << endl;
  49. }
  50.  
  51. }
  52.  
  53. return 0;
  54. }
Success #stdin #stdout 0s 5316KB
stdin
2
7
+ * - 5 4 100 20
3
- 4 7 
stdout
Standard output is empty