Se consideră o expresie aritmetică formată din literele mici ale alfabetului, operatorii binari +, –, *, /, %, ^ şi parantezele rotunde. Operanzii, literele mici, au implicit următoarele valori: a=0, b=1, c=2, ..., z=25. Considerând că x şi y sunt doi operanzi oarecare, operatorii au următoarele semnificaţii:
Operator
Semnificaţie
Expresie
Calcul efectiv
Exemple
+
adunare
x + y
= (x+y) mod 26
e + h = (5 + 8) mod 26 = 13 = m
p + r = (16 + 18) mod 26 = 34 mod 26=8 = h
–
scădere
x – y
= x – y, dacă x >= y
= x – y + 26, dacă x < y
d – b = 3 – 1 = 2 = c
p – r = (16 – 18) + 26 = 24 = x
*
înmulţire
x * y
= (x * y) mod 26
p * r = (16 * 18) mod 26 = 2 = c
/
div
x / y
= x div y, dacă y > 0
= z (adică 25), dacă y=0
r / e = 18 div 5 = 3 = d
r / a = z (pentru că a=0)
%
mod
x % y
= x mod y, dacă y > 0
= a (adică 0), dacă y=0
r % e = 18 mod 5 = 3 = d
r % a = a (pentru că a=0)
^
ridicare la putere
x ^ y
= a, dacă x = 0
= (x*y) mod 26, dacă x>0
c^d = 23 mod 26 = 8 mod 26 = 8 = h
a^c = 0^2 = 0 = a
Prioritatea operatorilor: se evaluează mai întâi expresiile cuprinse între paranteze rotunde, apoi ridicarea la putere. Urmează operatorii *, /, % cu aceeaşi prioritate, iar + şi – sunt cele mai puţin prioritare.
Cerinţă
Dându-se 3 expresii, să se evalueze fiecare.
Date de intrare
Fişierul azeval.in conţine exact 3 linii. Pe fiecare linie se găseşte câte o expresie.
Date de ieşire
Fişierul azeval.out va conţine exact 3 linii, pe fiecare linie aflându-se o singură literă mică reprezentând rezultatul evaluării unei expresii.
Restricţii
orice expresie este corectă şi conţine doar litere mici, paranteze rotunde şi operatorii specificaţi
o expresie nu va avea mai mult de 250 de caractere
Într-o expresie în care prioritatea operatorilor este aceeaşi, evaluarea se face de la stânga la dreapta; de exemplu, p^q^t este echivalentă cu (p^q)^t, iar r/e*g%d este echivalentă cu ((r/e)*g)%d
Expresia a^a este considerată ca fiind egală tot cu a
Expresiile nu conţin operatori unari, deci nu există subexpresii de forma +e sau –e.
10% din teste nu vor conţine paranteze; alte 20% din teste vor conţine doar operatorii + şi –; alte 20% din teste nu vor conţine operatorul ^.
Pentru a obţine punctajul la un test trebuie ca răspunsurile la toate cele 3 expresii să fie corecte
Exemplu
azeval.in
azeval.out
Explicaţii
e-(t+q)%(d-p)
c+(k+n)^z
(i-(t+w))^e^m^n
v
z
b
Pentru prima expresie: e–(t+q)%(d-p)= 4-(19+16)%(4-15)=
= 4–9%14 = 4–9 = 21 = v