Advertisement
bizzcuit

solve

Feb 11th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.88 KB | None | 0 0
  1. //разкоментирайте закоментираното долу, и махнете биг интиджърите, с които се боря....
  2. и минават 9/10
  3.  
  4. package com.company;
  5.  
  6. import java.io.BufferedReader;
  7. import java.io.ByteArrayInputStream;
  8. import java.io.IOException;
  9. import java.io.InputStreamReader;
  10. import java.math.BigInteger;
  11. import java.util.Stack;
  12.  
  13. public class Solve {
  14. public static void main(String[] args) throws IOException {
  15. testInput();
  16.  
  17. BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  18. String problem = in.readLine();
  19. problem = problem.replaceAll(" ", "");
  20.  
  21. Stack<Integer> integers = new Stack<>();
  22. Stack<Character> signs = new Stack<>();
  23.  
  24. String number;
  25. char sign;
  26. int i = 0;
  27.  
  28. while (problem.contains("*") || problem.contains("+") || problem.contains("-")) {
  29. if (problem.charAt(i) == '(') {
  30. number = problem.substring(0, i - 1);
  31. sign = problem.substring(i - 1, i).charAt(0);
  32. integers.push(Integer.parseInt(number));
  33. signs.push(sign);
  34.  
  35. problem = problem.substring(i + 1, problem.length() - 1);
  36. i = 0;
  37. } else {
  38. i++;
  39. }
  40.  
  41. if (!problem.endsWith(")")) {
  42. for (int j = 0; j < problem.length(); j++) {
  43. if (problem.charAt(j) == '+' || problem.charAt(j) == '-' || problem.charAt(j) == '*') {
  44. number = problem.substring(0, j);
  45. sign = problem.substring(j, j + 1).charAt(0);
  46. integers.push(Integer.parseInt(number));
  47. signs.push(sign);
  48.  
  49. problem = problem.substring(j + 1, problem.length());
  50. }
  51. }
  52. }
  53. }
  54.  
  55. BigInteger finalSum = new BigInteger(problem);
  56. int rotations = integers.size();
  57.  
  58. for (int j = 0; j < rotations; j++) {
  59. if (signs.peek() == '+') {
  60. finalSum.add(BigInteger.valueOf(integers.pop()));
  61. // finalSum += integers.pop();
  62. signs.pop();
  63. } else if (signs.peek() == '*') {
  64. finalSum.multiply(BigInteger.valueOf(integers.pop()));
  65. // finalSum *= integers.pop();
  66. signs.pop();
  67. } else if (signs.peek() == '-') {
  68. finalSum = BigInteger.valueOf(integers.pop()).subtract(finalSum);
  69. // finalSum = integers.pop() - finalSum;
  70. signs.pop();
  71. }
  72. }
  73.  
  74. System.out.println(finalSum);
  75. }
  76.  
  77. private static void testInput() {
  78. String test = "12*(35-(46*(5+15)))";
  79. System.setIn(new ByteArrayInputStream(test.getBytes()));
  80. }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement