Fişierul intrare/ieşire:ecexp.in, ecexp.outSursăad-hoc
AutorRobert VargaAdăugată decypryCiprian Oprisa cypry
Timp execuţie pe test0.1 secLimită de memorie16384 kbytes
Scorul tăuN/ADificultateN/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.inecexp.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).

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?