| Fişierul intrare/ieşire: | ecexp.in, ecexp.out | Sursă | ad-hoc |
| Autor | Robert Varga | Adăugată de | |
| Timp execuţie pe test | 0.1 sec | Limită de memorie | 16384 kbytes |
| Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Expresii echivalente
În această problemă o expresie poate fi:
* formată dintr-o singură variabilă notată cu o literă mică sau o majusculă;
* de forma: (a ° b), unde a şi b sunt expresii, iar ° este operatorul '+' sau '*'.
Fiind dată o expresie să se determine câte expresii există care sunt echivalente cu ea. O expresie este echivalentă cu alta dacă sunt formate din aceleaşi variabile, iar cele două expresii evaluate dau aceeaşi valoare pentru orice valori posibile ale variabilelor. Afişaţi rezultatul modulo 109+7.
Exemple de echivalenţe:
(a+b) == (b+a)
(a+(b+c)) == ((a+b)+c)
(a+(b*c)) == ((c*b)+a)Date de intrare
Fişierul de intrare ecexp.in conţine pe prima linie numărul de teste T. Pe următoarele T linii veţi găsi câte un string care reprezintă o expresie corectă.
Date de ieşire
În fişierul de ieşire ecexp.out scrieţi rezultatul fiecărui test pe un rând separat.
Restricţii
- 0 ≤ T ≤ 30
- lungimea fiecărei expresii este între 1 şi 250 de caractere;
- fiecare expresie este corect formată;
- literele care apar într-o expresie sunt distincte; de exemplu ((a*b)+(a*c)) nu este o expresie validă deoarece litera a se repetă.
Exemplu
| ecexp.in | ecexp.out |
|---|---|
| 5 (a+b) (a+(b+c)) (A+(B*C)) ((x*y)+(a*b)) ((a+(b+c))+(d*(e*f))) | 2 12 4 8 1440 |
Explicaţie
Pentru primul test, cele două expresii echivalente sunt (a+b) şi (b+a).
