Fișierul intrare/ieșire constrangere.in, constrangere.out Sursă ad-hoc
Autor Adăugată de avatar spatarel Spatarel Dan-Constantin spatarel
Timp de execuție pe test 0.4 sec Limită de memorie 16384 KB
Scorul tău N/A Dificultate N/A

Constrangere

O constrângere este o egalitate sau o inegalitate În care apar variable și constante. Fiecare variabilă se află într-un domeniu de definiție (mulțimea valorilor posibile) finit și discret (inclus în mulțimea numerelor naturale). Spunem că o constrângere este satisfăcută dacă și numai dacă fiecărei variabile i se poate atribui o valoare din propriul ei domeniu de definiție astfel încât egalitatea sau inegalitatea este satisfăcută.

De exemplu, constrângerea X+Y=5 cu domeniile de definiție X ∈ {1, 2, 3, 4} și Y ∈ {1, 2, 3, 4} se poate satisface dacă:

  • X = 1 și Y = 4
  • X = 2 și Y = 3
  • X = 3 și Y = 2
  • X = 4 și Y = 1

Așadar, sunt 4 moduri în care se pot atribui valori variabilelor astfel încât să constrângerea să fie satisfăcută.

Citiți secțiunea de restricții și precizări pentru a vedea cum poate arăta o constrângere.

Cerință

Determinați în câte moduri se pot atribui valori variabilelor dacă se cunosc domeniile de definiție ale acestora și constrângerea pe care trebuie să o respecte.

Date de intrare

Fișierul de intrare constrangere.in conține pe prima linie un număr întreg N, reprezentând numărul de variabile.

Pe următoarele N linii sunt descrise domeniile de definiție ale variabilelor și fiecare dintre aceste linii este de forma: V m M (V este o literă mare a alfabetului englez și reprezintă numele variabilei, m este un număr întreg, reprezentând limita inferioară a domeniul de definiție iar M este un număr întreg, reprezentând limita superioară a domeniul de definiție).

Pe ultima linie a fișierului de intrare se află constrângerea ce trebuie respectată.

Date de ieșire

În fișierul de ieșire constrangere.out se va afla un singur număr natural, numărul de moduri distincte în care pot fi atribuite valori variabilelor.

Restricții

  • 1 ≤ N ≤ 10
  • 1 ≤ m ≤ M ≤ 10
  • Constrângerea va conține un singur semn de egalitate (=) sau un singur semn de mai mic (<).
  • Constrângerea poate conține: paranteze rotunde (eventual imbricate), operatorii +, și *, nume de variabile, constante (numere întregi) și spații.
  • Operatorul unar () are precedența cea mai mare. Apoi urmează operatorul de înmulțire (*). La final au loc operațiile de adunare (+) și scădere () cu aceeași precedență.
  • Asocierea termenilor și factorilor se face de la stânga la dreapta. (ex.: 2 – 2 – 2 = (2 – 2) – 2 = 0 – 2 = -2)
  • Fiecare variabilă va apărea o singură dată în constrângere.
  • Numărul de constante nu depășește numărul de variabile + 1.
  • Fiecare constantă C respectă restricția -100 ≤ C ≤ 100.
  • Lungimea unei constrângeri nu depășește 100 de caractere.
  • Constrângerea este corectă sintactic.
  • Oricum s-ar da valori variabilelor, cu respectarea domeniilor lor de definiție, orice rezultat intermediar folosit la evaluarea constrângerii se va afla în intervalul [-215, 215 – 1].

Exemplu

constrangere.in constrangere.out
2
X 1 4
Y 1 4
X+Y=5
4

Explicație

În primul exemplu, cele 4 modalități de a atribui valori variabilelor sunt:
X = 1 și Y = 4
X = 2 și Y = 3
X = 3 și Y = 2
X = 4 și Y = 1

Trebuie să te autentifici pentru a trimite soluții. Click aici