Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //разкоментирайте закоментираното долу, и махнете биг интиджърите, с които се боря....
- и минават 9/10
- package com.company;
- import java.io.BufferedReader;
- import java.io.ByteArrayInputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.math.BigInteger;
- import java.util.Stack;
- public class Solve {
- public static void main(String[] args) throws IOException {
- testInput();
- BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
- String problem = in.readLine();
- problem = problem.replaceAll(" ", "");
- Stack<Integer> integers = new Stack<>();
- Stack<Character> signs = new Stack<>();
- String number;
- char sign;
- int i = 0;
- while (problem.contains("*") || problem.contains("+") || problem.contains("-")) {
- if (problem.charAt(i) == '(') {
- number = problem.substring(0, i - 1);
- sign = problem.substring(i - 1, i).charAt(0);
- integers.push(Integer.parseInt(number));
- signs.push(sign);
- problem = problem.substring(i + 1, problem.length() - 1);
- i = 0;
- } else {
- i++;
- }
- if (!problem.endsWith(")")) {
- for (int j = 0; j < problem.length(); j++) {
- if (problem.charAt(j) == '+' || problem.charAt(j) == '-' || problem.charAt(j) == '*') {
- number = problem.substring(0, j);
- sign = problem.substring(j, j + 1).charAt(0);
- integers.push(Integer.parseInt(number));
- signs.push(sign);
- problem = problem.substring(j + 1, problem.length());
- }
- }
- }
- }
- BigInteger finalSum = new BigInteger(problem);
- int rotations = integers.size();
- for (int j = 0; j < rotations; j++) {
- if (signs.peek() == '+') {
- finalSum.add(BigInteger.valueOf(integers.pop()));
- // finalSum += integers.pop();
- signs.pop();
- } else if (signs.peek() == '*') {
- finalSum.multiply(BigInteger.valueOf(integers.pop()));
- // finalSum *= integers.pop();
- signs.pop();
- } else if (signs.peek() == '-') {
- finalSum = BigInteger.valueOf(integers.pop()).subtract(finalSum);
- // finalSum = integers.pop() - finalSum;
- signs.pop();
- }
- }
- System.out.println(finalSum);
- }
- private static void testInput() {
- String test = "12*(35-(46*(5+15)))";
- System.setIn(new ByteArrayInputStream(test.getBytes()));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement