import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); //1-2+3*(4-5) while(in.hasNext()){ String str = in.next() ; str="#"+str+"#" ; //System.out.println(str); Stack<Integer> ss = new Stack<Integer>() ; Stack op = new Stack() ; op.clear(); ss.clear(); for(int i=0;i<str.length();i++){ int pre = 0 ; if(str.charAt(i)>='0'&&str.charAt(i)<='9'){///讀到數字 pre = i ; for(int j=i;j<str.length();j++){ if(str.charAt(j)<'0'||str.charAt(j)>'9'){ i=j ; break ; } if(str.charAt(j)>='0'&&str.charAt(j)<='9'&&j==str.length()-1){ i=str.length() ; break ; } } //System.out.println(pre+","+i); int x = Integer.valueOf(str.substring(pre, i)) ; //System.out.println(x); i--; ///壓入數字棧 ss.push(x) ; }else{//讀到符號 if(str.charAt(i)=='('||(str.charAt(i)=='#'&&op.size()==0)){///左括號和標識直接進入符號棧 op.push(str.charAt(i)) ; //System.out.println("begin"); continue ; } if((op.peek().equals('(')||op.peek().equals('#'))&&(str.charAt(i)=='+'||str.charAt(i)=='-'||str.charAt(i)=='*'||str.charAt(i)=='/')){//第一個運算符壓入符號棧 op.push(str.charAt(i)) ; //System.out.println("first"); continue ; } if(str.charAt(i)==')'){///右括號 int temp =0 ; while(!op.peek().equals('(')){ int b = (int)ss.pop() ; int a = (int)ss.pop() ; if(op.peek().equals('+')){ temp = a+b; }else if(op.peek().equals('-')){ temp = a-b; }else if(op.peek().equals('*')){ temp = a*b; }else { temp = a/b; } op.pop(); ss.push(temp) ; } op.pop() ; continue ; } if(str.charAt(i)=='#'){///結尾 int temp =0 ; //System.out.println(op.peek()); while(!op.peek().equals('#')){ int b = (int)ss.pop() ; int a = (int)ss.pop() ; if(op.peek().equals('+')){ temp = a+b; }else if(op.peek().equals('-')){ temp = a-b; }else if(op.peek().equals('*')){ temp = a*b; }else{ temp = a/b; } op.pop(); ss.push(temp) ; } op.pop() ; continue ; } ///+-同級之間相遇,前面的算一下就ok了 if((str.charAt(i)=='+'||str.charAt(i)=='-')&&(op.peek().equals('+')||op.peek().equals('-'))){ int temp=0; int b = (int)ss.pop() ; int a = (int)ss.pop() ; if(op.peek().equals('+')){ temp = a+b; }else{ temp = a-b; } //System.out.println("temp="+temp); op.pop(); ss.push(temp) ; op.push(str.charAt(i)); continue ; } /// */同級之間相遇 if((str.charAt(i)=='*'||str.charAt(i)=='/')&&(op.peek().equals('*')||op.peek().equals('/'))){ int temp=0; int b = (int)ss.pop() ; int a = (int)ss.pop() ; if(op.peek().equals('*')){ temp = a*b; }else{ temp = a/b; } op.pop(); ss.push(temp) ; op.push(str.charAt(i)); continue ; } //+-遇到*/ if((str.charAt(i)=='+'||str.charAt(i)=='-')&&(op.peek().equals('*')||op.peek().equals('/'))){ int temp=0; int b = (int)ss.pop() ; int a = (int)ss.pop() ; if(op.peek().equals('*')){ temp = a*b; }else{ temp = a/b; } op.pop() ; ss.push(temp) ; op.push(str.charAt(i)); continue ; } ///*/遇到+- if((str.charAt(i)=='*'||str.charAt(i)=='/')&&(op.peek().equals('+')||op.peek().equals('-'))){ op.push(str.charAt(i)); continue ; } } } System.out.println(ss.peek()); } } }