Revizia anterioară Revizia următoare
Fişierul intrare/ieşire: | eval.in, eval.out | Sursă | preONI 2007 Runda Finala |
Autor | Constantin Jucovschi | Adăugată de | |
Timp execuţie pe test | 0.275 sec | Limită de memorie | 20480 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Eval
Se da o expresie matematica care va contine N variabile, numele variabilelor fiind litere mici din alfabetul englez. Expresia va contine variabile, paranteze ((, )), operatori binari (+, -, *
) si operatori unari (-, +, []
). Cu exceptia operatorului unar [] care semnifica operatia de ridicare la patrat, toti ceilalti operatori au semnificatia clasica. Operatorii unari au prioritatea cea mai mare, urmati de operatorul *; operatorii binari +, - au prioritatea cea mai mica. Scrieti un program care evalueaza o astfel de expresie.
Date de intrare
Pe prima linie din fisierul de intrare eval.in se va afla numarul N de variabile din expresie. Urmatoarele N vor contine cate un numar natural reprezentand valorile variabilelor din expresie: prima linie va reprezenta valoarea variabilei a, a doua linie va reprezenta valoarea variabilei b, etc.. Urmatoarea linie va contine un sir de caractere reprezentand expresia care trebuie evaluata.
Date de iesire
In fisierul de iesire eval.out se va afla un singur numar natural reprezentand valoarea expresiei.
Restrictii
- 1 ≤ N ≤ 26
- Lungimea expresie este un numar natural din intervalul [1, 30.000]
- Valoarea fiecare variabile este un numar natural din intervalul [0, 101.000]
- Se garanteaza ca valoarea expresiei va fi un numar natural din intervalul [0, 101.000]
Exemplu
eval.in | eval.out |
---|---|
3 1 2 3 a*(b+c)*(a*a+b*--+c)- c | 26 |