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. string expr;
  12. cin >> expr;
  13.  
  14. stack<long long> st;
  15. bool valid = true;
  16.  
  17. for (int i = expr.size() - 1; i >= 0; --i) {
  18. char c = expr[i];
  19. if (c >= '0' && c <= '9') {
  20. st.push(c - '0'); // convert char to number
  21. } else if (c == '+' || c == '-' || c == '*' || c == '/') {
  22. if (st.size() < 2) {
  23. valid = false;
  24. break;
  25. }
  26. long long a = st.top(); st.pop();
  27. long long b = st.top(); st.pop();
  28. if (c == '+') st.push(a + b);
  29. else if (c == '-') st.push(a - b);
  30. else if (c == '*') st.push(a * b);
  31. else if (c == '/') {
  32. if (b == 0) {
  33. valid = false;
  34. break;
  35. }
  36. st.push(a / b);
  37. }
  38. } else {
  39. valid = false;
  40. break;
  41. }
  42. }
  43.  
  44. if (valid && st.size() == 1) {
  45. cout << st.top() << endl;
  46. }
  47.  
  48. }
  49.  
  50. return 0;
  51. }
Success #stdin #stdout 0.01s 5324KB
stdin
2
7
+ * - 5 4 100 20
3
- 4 7 
stdout
7