#include #include #include #include #include #include #include #include using namespace std; #define EPS 1e-12 char s[10042], t[10042], tt[10042]; char *ss; long long parsenum(char *s, int len) { long long res = 0; for (int i = 0; i < len; ++i) { res = res*10 + (s[i]-'0'); } return res; } long long parsex(char *s, int len) { int i = 0; while (i < len && s[i] != '*') ++i; if (i == len) { return parsenum(s, len); } else { return parsenum(s, i) * parsex(s+i+1, len-i-1); } } long long parseplus(char *s, int len) { int i = 0; while (i < len && s[i] != '+') ++i; if (i == len) { return parsex(s, len); } else { return parsex(s, i) + parseplus(s+i+1, len-i-1); } } long long parse2plus(char *s, int len) { int i = 0; while (i < len && s[i] != '+') ++i; if (i == len) { return parsenum(s, len); } else { return parsenum(s, i) + parse2plus(s+i+1, len-i-1); } } long long parse2x(char *s, int len) { int i = 0; while (i < len && s[i] != '*') ++i; if (i == len) { return parse2plus(s, len); } else { return parse2plus(s, i) * parse2x(s+i+1, len-i-1); } } int main() { gets(s); while (s[0] != 'E') { strcpy(t, s); // min (s) int tlen = strlen(t), slen = strlen(s); int poslxo = -1, prveox = -1; bool xox = false; for (int i = 0; i < slen-1; ++i) { if (s[i] == '*' && s[i+1] == '0' && (i == slen-2 || s[i+2] == '*' || s[i+2] == '+')) { poslxo = i; } if (s[i] == '0' && s[i+1] == '*' && (i == 0 || s[i-1] == '*' || s[i-1] == '+') && prveox == -1) { prveox = i; } if (i < slen-2 && s[i] == '*' && s[i+1] == '0' && s[i+2] == '*') { xox = true; } } if (prveox == -1 && poslxo == -1) { printf("%Ld", parseplus(s, strlen(s))); } else if (xox) { printf("0"); } else if (prveox == -1) { ss = s+poslxo+1; printf("%Ld", parseplus(ss, strlen(ss))); } else if (poslxo == -1) { s[prveox+1] = 0; printf("%Ld", parseplus(s, strlen(s))); } else if (poslxo < prveox) { s[prveox+1] = 0; ss = s+poslxo+1; //printf("%s\n", ss); printf("%Ld", parseplus(ss, strlen(ss))); } else { s[prveox+1] = 0; ss = s+poslxo+1; //printf("%s alebo %s\n", s, ss); printf("%Ld", min(parseplus(s, strlen(s)), parseplus(ss, strlen(ss)))); } printf(" "); // max (t) int j = 0; int ttlen = 0; while (j < tlen) { int nextplus = j; while (nextplus < tlen && t[nextplus] != '+') ++nextplus; poslxo = prveox = -1; xox = false; for (int i = j; i < nextplus-1; ++i) { if (t[i] == '*' && t[i+1] == '0' && (i == nextplus-2 || t[i+2] == '*' || t[i+2] == '+')) { poslxo = i; } if (t[i] == '0' && t[i+1] == '*' && (i == j || t[i-1] == '*' || t[i-1] == '+')) { prveox = i; } if (i < nextplus-2 && t[i] == '*' && t[i+1] == '0' && t[i+2] == '*') { xox = true; } } if (xox || prveox != -1 || poslxo != -1) { } else { if (ttlen) { tt[ttlen++] = '+'; } for (int i = j; i < nextplus; ++i) { tt[ttlen++] = t[i]; } } j = nextplus+1; } tt[ttlen] = 0; //printf("%s\n", tt); printf("%Ld", parse2x(tt, ttlen)); printf("\n"); gets(s); } }