#include <iostream>
#include <map>
using namespace std;
char ch[21][21];
int n,m;
bool chk[21][21];
void sech (int x,int y){
char ;F
if (x != 1)sech (x - 1,y);
if (y != 1)sech (x,y - 1);
if (x != n){
VIS D CNT D
sech (x + 1,y);D
DEL VIS D CNT D
}
if (y != m)sech (x,y + 1);J
return;
}
int main(){
cin >> n >> m;
for (int i = 1;i <= n;i++){
for (int j = 1;j <= m;j++)cin >> ch[i][j];
}
sech (1,1);
return 0;
}
#include <iostream>
#include <stack>
#include <cmath>
using namespace std;
stack <int> numb;
stack <char> op;
char ch;
bool check(char,char);
void prepare ();
int main(){
while ((ch = getchar()) != '\n' || ch != ')'){
if (ch >= '0' && ch <= '9'){
numb.push(ch - '0');
}
else if (ch == '('){
main();
}
else{// + - * /
if (op.size()){
if (!check(op.top(),ch)){//check:优先级a比b高不成立
while (!check(op.top(),ch)){
prepare();
op.push(ch);
}
}
else{
op.push(ch);
}
}
else op.push(ch);
}
}
if (ch == '\n'){
while(op.size()){
prepare ();
}
cout << numb.top();
}
return 0;
}
bool check(char ch1,char ch2){
int a,b;
switch (ch1){
case '+':
a = 1;
break;
case '-':
a = 1;
break;
case '*':
a = 2;
break;
case '/':
a = 2;
break;
default:
a = 3;
}
switch (ch2){
case '+':
b = 1;
break;
case '-':
b = 1;
break;
case '*':
b = 2;
break;
case '/':
b = 2;
break;
default:
b = 3;
}
return a <= b;
}
void prepare (){
int a,b;
b = numb.top();
numb.pop();
a = numb.top();
numb.pop();
switch (op.top()) {
case '+':
numb.push(a + b);
break;
case '-':
numb.push(a - b);
break;
case '*':
numb.push(a * b);
break;
case '/':
numb.push(a / b);
break;
case '^':
numb.push(pow (a,b));
}
op.pop();
return;
}