Fişierul intrare/ieşire:constrangere.in, constrangere.outSursăad-hoc
AutorAdăugată despatarelSpatarel Dan-Constantin spatarel
Timp execuţie pe test0.4 secLimită de memorie16384 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise

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.inconstrangere.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 sa te autentifici pentru a trimite solutii. Click aici