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 intreg 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 intreg reprezentand valoarea expresiei.
Restrictii
- 1 ≤ N ≤ 26
- Lungimea expresie este un numar natural din intervalul [1, 100.000]
- Valoarea fiecarei variabile este un numar intreg din intervalul [-101.000, 101.000]
- Se garanteaza ca expresia este corecta din punct de vedere matematic
- Se garanteaza ca valoarea expresiei va fi un numar intreg din intervalul [-101.000, 101.000]
- Pentru 70% din teste variabilele si rezultatul expresiei vor fi numere naturale
Exemplu
eval.in | eval.out |
---|---|
3 1 2 3 [a]*(b+c)*(a*a+b*--+c)-c | 32 |